类型判断 判断是否为NaN 判断是否为正常数值 运算符 短路操作 异或运算 双否取整 隐式转换规则

34 阅读1分钟

类型判断

`console.log(typeof null); //类型为object
console.log(typeof x); //类型为undefined
console.log(typeof NaN);`//类型为number

判断是否为NaN

首先是number,其次是NaN。
    `var x = NaN;
    console.log(typeof x === 'number' && isNaN(x));` 返回结果为true

判断值是否为正常数值

isFinite(Infinity);
    Infinity、-InfinityNaNundefined返回false,
    其他返回true(null隐式转换为数值0,返回值为true)

运算符优先级

1()、2一元运算符、3算数运算符、4关系运算符(先大于小于,再各种等于)、5逻辑运算符(先与后或)、6赋值
    `console.log(3 < 2 < 1);`返回true3 < 2 ) < 1
         false < 1
         0 < 1  所以返回true
算数运算符+ - * /**
一元运算符x++,x--++x,--x
 `var x =0;
    x++;
    console.log(x++);
    console.log(x);`
逻辑运算符&&II
关系运算符<,><=,>===,!====,!==
赋值运算符=+=,-=,*=,/=,%=

短路操作 && ||

短路与 &&
    如果左边为真,返回右边
    如果**左边为假**,返回左边**本身**
短路或 ||
    如果左边为假,返回右边
    如果**左边为真**,返回左边**本身**

二进制运算符

异或运算^
    两个进制不同时返回1,相同时返回0
        `//如何转换x和y的值
        var x = 1;
        var y = 9;
        var mid;
        mid = x;
        x = y;
        y = mid;
        console.log(x,y);`
    `//异或运算方法
    var x = 1;
    var y = 9;
    x^=y;
    y^=x;
    x^=y;
    console.log(x,y);`

否运算~ 双否 取整
    ~~11.22 ==>11

隐式转换规则

''nullundefinedNaN05个会转换为false,其他都转成true
NaN 与任何值做对比都是false
如果一个操作值是数值,则另一个值转换为数值进行比较
nullNaNundefined 在&&中,返回nullNaNundefined
    `console.log('' + NaN - false + !-1);`返回NaN
        ' NaN' - false + !true
         NaN - 0 + 0