表达式void _没有返回值,因此返回结果是undefined。void并不改变表达式的结果,只是让表达式不返回值:
e.g.
var a=42;
console.log(void a, a); //undefined 42
void 0、void 1和undefined之间并没有实质上的区别。
NaN意指“不是一个数字”,理解为“无效数值”“失败数值”或“坏数值”可能更准确些。
NaN !=NaN; //true
e.g.
var a = 2/"foo";
var b = "foo";
a; //NaN
b;//"foo"
window.isNaN(a);//true
window.isNaN(b); //true
if(!Number.isNaN) {
Number.isNaN = function(n) {
return n !== n;
};
}
var a = 1/0; //Infinity
var b = -1/0; //-Infinity
var c = Infinity/Infinity;//NaN
有穷正数除以Infinity,结果是0。
JSON.stringify(-0)返回"0",而JSON.parse("-0")返回-0。
0 === -0;//true
区分-0和0:
function isNegZero(n){
n = Number(n);
return (n === 0) && (1/n === -Infinity);
}
isNegZero(-0); // true
isNegZero(0/-3); // true
isNegZero(0); //false
if(!Object.is){
Object.is = function (v1, v2){
//判断是否-0
if(v1 === 0 && v2 === 0){
return 1/v1 === 1/v2;
}
//判断是否为NaN
if(v1 !== v2){
return v2 !== v2;
}
//其他情况
return v1 === v2;
};
}