null 和 undefined
Undefined相当于一个变量并没有明确的被赋值(是否被赋值,可能无心忽略,逻辑问题) JS的怪异之处就在于undefined真的是一个可以使用的值。同理,当缺失参数时 JavaScript 会分配一个 undefined:
a = 1;
a !== undefined // true
a = undefined
var b
a === b //true
Null相当于变量被明确指定了没有值,而不是由于意外的原因被忽略掉了(赋值null,正当逻辑)
参与运算
JS的null如果进入运算,真的会被解析成为0或false:undefined进入运算,一律得到NaN:
逻辑判断
null和undefined逻辑判断时都认为是false。只用一个判断,就可以同时检验这两项是否为真:
但是如果碰到大坑==的时候
好的做法,一律使用===
判断一个量已定义且非空,只使用:if (a !== null && a !== undefined)。
=== 和 ==
1.==用来判断两个值是否相等当两个值类型不同时,会发生自动转换,得到的结果非常不符合直觉,这可能不是你想要的结果。
2.===
类型+值比较
"如果两边的操作数具有相同的类型和值,===返回true,!==返回false。"——《JavaScript:语言精粹》
最佳实践:
任何时候在比较操作中使用 === 和 !== json操作
/ stringFromPerson is equal to "{"name":"Saad","age":26,"department":{"ID":15,"name":"R&D"}}" /
var personFromString = JSON.parse(stringFromPerson);
/ personFromString is equal to person object /
to string
var obj = {
name: 'myObj'
};
JSON.stringify(obj);
函数对象及匿名函数
函数对象赋值};
// a()
var a = {
fun : function() {
};
}
// a.fun()
someElement.addEventListener("click",function(e) {
// I'm anonymous!
});
以及
匿名函数
var age = '34';
var status = 'single';
function createMember(){
// [...]
}
function getMemberDetails(){
// [...]
}
to
var myApplication = function(){
var name = 'Chris';
var age = '34';
var status = 'single';
return{
createMember:function(){
// [...]
},getMemberDetails:function(){
// [...]
}
}
}();
// myApplication.createMember() and
// myApplication.getMemberDetails() now works.
最佳实践
1.定义多个变量时,省略var关键字,用逗号代替更好的做法
2.谨记,不要省略分号,不要省略花括号
省略分号,可能导致更大的,未知的,难以发现的问题
更好的做法
3.使用{}代替 new Ojbect()
在JavaScript中创建对象的方法有多种。可能是传统的方法是使用”new”加构造函数,像下面这样:
更好的做法