表達式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;
};
}