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

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

作者: 原味的夏天宝宝 | 来源:发表于2017-08-06 23:22 被阅读0次
    书的封面

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

          本文链接:https://www.haomeiwen.com/subject/eganlxtx.html