javascript学习笔记——类型转换

90 阅读1分钟

一个有趣的例子 ++[[]][+[]]+[+[]] = '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))