一个有趣的例子 ++[[]][+[]]+[+[]] = '10'
执行步骤:
1、++[[]][+[]]
+
[+[]]
2、++[[]][0]
+
[0]
3、++[]
+
'0'
4、++0
+
'0'
5、1
+
'0'
6、'10'
另外一个简单的例子
[] + [] = ''
let arr = []
arr.valueOf() === arr // ture
arr.toString() // ''
[] + [] // '' + '' = ''
JSON.stringify(..)在对象中遇到undefined、function和symbol时会自动将其忽略,在数组中则会返回null(以保证单元位置不变)
var timestamp = +new Date()
获取时间戳,单位是微妙,+显式转换为number值
!!'323' // ture
显式转换为boolen值
~~5.9 // 5
去小数
array的indexOf()方法可以用~arr.indexOf()
来判断 (~按位非运算)
'45' || '545' // '45'
0 || '434' // '434'
'45' && '545' // '545'
0 && '434' // 0
“==允许在相等比较中进行强制类型转换,而===不允许”
NaN不等于NaN
'0' == false // true
'0' === false // false
JavaScript中<=是“不大于”的意思(即!(a>b),处理为!(b<a))