《你不知道的JavaScript中卷》第一部分读书笔记(2)

书的封面

表达式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;

};

}

你可能感兴趣的:(《你不知道的JavaScript中卷》第一部分读书笔记(2))