这个题是什么意思 不明白
一元正号运算符(+)位于其操作数前面,计算其操作数的数值,如果操作数不是一个数值,会尝试(就像使用 Number() 转型函数一样)将其转换成一个数值。
// 对于 Boolean 值,true 转为数值时为 1,false 则是转换为 0
+true; // 1
而后者,也就是逻辑非操作符(!),它总是会返回一个布尔值。因此,它会将操作数先转换为一个布尔值,然后对其进行取反。
// 非空字符串被转为布尔值时,为 true,对其取反则为 false
!"Lydia"; // false
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
隐式转换,这些题目有点无聊,现在已经很少有这种作为面试题了吧。
+true
是通过隐式转换转为数字,相同的做法还有+new Date()
直接转为数字类型1570358927845
。这是一种历史遗留问题,也属于奇技淫巧的一种。足够简洁但这种不显式很多
eslint config
中被禁止使用!"Lydia"
拆开来看,"Lydia"
是一个非空字符串,也就是真值。!
是取反操作符,取反后得到一个布尔值。那么将真值取反为就是false
。这个考验的就是你对真假值的认识。注意真值并不一定是布尔值
true
, 假值也不一定是false
。比如数字0
是假值,数字1
、0.1
以及字符串"0"
都是真值.关于真假值得辨认可以看看这篇文章的介绍。