以下知识点来自于编写高质量代码-改善JavaScript程序的188个建议,只用于自我知识的补充。
一.NaN
1.NaN是一个特殊的数量值,不表示一个数字,尽管下面的代码仍然是返回类型为number
console.log(typeof NaN);//number
console.log(typeof NaN===‘number‘);//true
可见typeof不能真正区分数字与NaN的区别。
为了进一步区分NaN与数字,可以使用isFinite函数,如果有限数值,该函数将返回true,如果是NaN、正负无穷大的数值,则返回false。
2.关于NaN的运算规则:
二.null与undefined:
1.以下代码结果:
console.log(null==undefined);//true
console.log(null!=undefined);//false;
console.log(null===undefined);//true
console.log(null!==undefined);//false
2.null是保留字,undefined不是保留字。
3.undefined的值在如下情况下出现:
三.==与===
1.==与!=缺乏传递性
2.===运算符算法:x===y,先比较两个值的类型是不是相等,如果不相同,直接返回false。如果类型相同,则根据x的类型展开如下算法
3.==运算符算法:x==y,如果x与y是同一类型,判断方式与===一样,如果x和y类型不一样,==会按照进行一定的类型转换:
console.log(‘‘==‘0‘);//false
console.log(0==‘‘);//true
console.log(0==‘0‘);//true
console.log(‘‘===‘0‘);//false
console.log(true==‘1‘);//
console.log(true==1);//
console.log(true==‘2‘);//就是1, 2都不可以
console.log(true==2);//
4.
console.log(false==‘fasle‘);//false:类型不同就返回false
console.log(false==‘0‘);//true:有一个参数boolean值,将其转换为number为0,当0与“0”进行比较的时候,根据第二条规则,就会将“0”转换为0,所以返回true
console.log(false==undefined);//false:类型不同就返回false
console.log(false==null);//false:类型不同就返回false
console.log(false=="");//true
四.逗号运算符
1.var a=1,2,3,4;
console.log(a);//报错,一个变量的重复定义
var a=(1,2,3,4);
console.log(a);//4,通过逗号运算符返回最后一个运算结果
原文:http://www.cnblogs.com/yangxiaoguai132/p/5224214.html