基本数据类型访问的是值,有5种基本数据类型:
- srting:字符串类型
- number:数字类型,可表示整数和浮点数
- boolean:布尔类型,取值true或false
- null:null类型,表示空对象
- undefined:undefined类型,表示未声明或者未赋值
var foo; // 当前foo为undefined
foo = 'Hello world!';
foo = 1024;
foo = true;
foo = null;
复杂数据类型访问的是引用,本质都是对象,常用的有:
- Object:对象
- Array:数组
- Function:函数
var foo = {
name: '同程旅游',
foundedTime: '2014年'
};
var bar = ['火车票', '机票', '汽车票', '酒店'];
function sayHi(name) {
return 'Hi! ' + name + '.';
}
typeof null类型判断、instanceof(会涉及到原型)、Array、toString
字符串使用单引号带来的好处是字符串内的双引号不需要转义。
var name = '同程旅游';
var htmlStr = '<a href="//www.ly.com">同程旅游</a>';
// bad
var htmlStr = '<div id="topLogin">\
<span>您好,欢迎使用LY.com访问同程!</span>\
<a class="login" rel="nofollow" href="https://passport.ly.com/">登录</a>\
<a class="register" rel="nofollow" href="https://passport.ly.com/register/index/">注册</a>\
</div>';
// good
var htmlStr = '<div id="topLogin">' +
'<span>您好,欢迎使用LY.com访问同程!</span>' +
'<a class="login" rel="nofollow" href="https://passport.ly.com/">登录</a>' +
'<a class="register" rel="nofollow" href="https://passport.ly.com/register/index/">注册</a>' +
'</div>';
// bad
var foo = new Object();
foo.name = '同程旅游';
foo.foundedTime = '2014年';
// good
var foo = {
name: '同程旅游',
foundedTime: '2014年'
};
参考:保留字列表
/* bad */
var foo = {
default: ''
};
/* good */
var foo = {
def: ''
};
/* bad */
var foo = {
'name': '同程旅游', // name不需要使用引号
'founded-time': '2014年'
};
/* good */
var foo = {
name: '同程旅游',
'founded-time': '2014年'
};
var foo = {
name: '同程旅游',
foundedTime: '2014年'
};
foo.name = undefined; // name属性的值为undefined,但是name属性还存在
delete foo.foundedTime;
/* bad */
var foo = new Array();
/* good */
var foo = [];
var foo = ['火车票', '机票', '汽车票', '酒店'];
foo[foo.lenght] = '景点门票'; // bad
foo.push('周边游'); // good
var foo = ['火车票', '机票', '汽车票', '酒店'];
var bar = foo.slice();
var foo = document.querySelectorAll('p');
var bar = Array.prototype.slice.call(foo);
var foo = ['火车票', '机票', '汽车票', '酒店'];
foo.splice(0, foo.length); // 保留数组引用,清空数组
foo.length = 0; // 保留数组引用,清空数组
foo = []; // 用一个新数组代替,性能最高