类型判断
`console.log(typeof null);
console.log(typeof x);
console.log(typeof NaN);`
判断是否为NaN
首先是number,其次是NaN。
`var x = NaN
console.log(typeof x === 'number' && isNaN(x))
判断值是否为正常数值
isFinite(Infinity);
Infinity、-Infinity、NaN、undefined返回false,
其他返回true(null隐式转换为数值0,返回值为true)
运算符优先级
1()、2一元运算符、3算数运算符、4关系运算符(先大于小于,再各种等于)、5逻辑运算符(先与后或)、6赋值
`console.log(3 < 2 < 1);`返回true
(3 < 2 ) < 1
false < 1
0 < 1 所以返回true
`var x =0
x++
console.log(x++)
console.log(x)
| 关系运算符 | <,> | <=,>= | ==,!= | ===,!== |
|---|
| | | | |
短路操作 && ||
短路与 &&
如果左边为真,返回右边
如果**左边为假**,返回左边**本身**
短路或 ||
如果左边为假,返回右边
如果**左边为真**,返回左边**本身**
二进制运算符
异或运算^
两个进制不同时返回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
隐式转换规则
''、null、undefined、NaN、0这5个会转换为false,其他都转成true
NaN 与任何值做对比都是false
如果一个操作值是数值,则另一个值转换为数值进行比较
null、NaN、undefined 在&&中,返回null、NaN、undefined
`console.log('' + NaN - false + !-1);`返回NaN
' NaN' - false + !true
NaN - 0 + 0