4、+、''、!

console.log(+true) // 1
console.log(!'ouyang') // false

解析:

1、一元加号会尝试将 boolean 类型的值转换成数字类型, true 转换成 1false 转换成 0
2、'ouyang' 为 true, 非真为假,即为 false

扩展:

console.log(+!'ouyang') // 0  
// 优先将 !'ouyang' 转换成 false 再将 false 转换成 0 

console.log(+true + 1) //  2 
// 转换成数字类型直接计算

console.log(+true + 1 + '11') //  '211'
// 与字符串相加直接转换成字符串, 字符串之前的运算正常返回后与字符串拼接,
// 但字符串之后的计算不会被转化,如下:

console.log(+true + 1 + 'ouyang' + !'ouyang') // '2ouyangfalse'
console.log(+true + 1 + !'ouyang' + 'ouyang') // '2ouyang'

// 更直观点的:
console.log(+true + 1 + 'ouyang' + !0) // '2ouyangtrue'
console.log(+true + 1 + !0 + 'ouyang') // '3ouyang'

*PS:此题出自<<高级前端面试>>小程序,可前往学习。*

你可能感兴趣的:(4、+、''、!)