【js 致死点】运算符

2019-02-26  本文已影响0人  南方帅
'3' + 4 + 5 // "345"
3 + 4 + '5' // "75"
-1 % 2 // -1
1 % -2 // 1
// 所以判断一个数 奇偶数的 正确的写法
function isOdd(n) {
  return Math.abs(n % 2) === 1;
}
+true   //1
-(-x)    //x 

2 ** 3 ** 2 // 512
// 相当于 2 ** (3 ** 2)

'2' > '123'
'大' < '小'  //  中文排序和比较 不适用

NaN比较 除了!= 其他都是false

1 > NaN             // false
1 <= NaN          // false
'1' > NaN           // false
'1' <= NaN         // false
NaN > NaN       // false
NaN <= NaN     // false
NaN != NaN      // true

undefined和null与自身严格相等

undefined === undefined // true
null === null // true

== 相等运算符。 同类型的 == 等同于 === 不同类型会 Number(a) === Number(b)

0 == false // true
// 等同于 0 === Number(false)
'true' == true // false
// 等同于 Number('true') === Number(true)
// 等同于 NaN === 1

!= 是判断相等 然后取反

1 != '1' // false

// 等同于
!(1 == '1')

~位运算符 对数字取反 只能针对整数部分,可用于取整

~ -3 // 2    3-1  = 2
~3 // -4  -3-1 = -4
~~0.00000003 //0     不同parseInt(0.0000003) // 3

一般运算级别相同的都是左结合。
例外:上面提到的 ** 指数运算符就是右结合、赋值运算符、三元运算符

w = x = y = z;
q = a ? b : c ? d : e ? f : g;

// 等同于
w = (x = (y = z));
q = a ? b : (c ? d : (e ? f : g));
上一篇 下一篇

猜你喜欢

热点阅读