console.log(+true) // 1
console.log(!'ouyang') // false
解析:
1、一元加号会尝试将 boolean
类型的值转换成数字类型, true
转换成 1
, false
转换成 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:此题出自<<高级前端面试>>小程序,可前往学习。*