这个结果是什么?

这个题是什么意思 不明白
图片描述

阅读 2.2k
3 个回答

隐式转换,这些题目有点无聊,现在已经很少有这种作为面试题了吧。

+true是通过隐式转换转为数字,相同的做法还有+new Date()直接转为数字类型1570358927845

这是一种历史遗留问题,也属于奇技淫巧的一种。足够简洁但这种不显式很多 eslint config 中被禁止使用


!"Lydia"拆开来看,"Lydia"是一个非空字符串,也就是真值。!是取反操作符,取反后得到一个布尔值。那么将真值取反为就是false。这个考验的就是你对真假值的认识。

注意真值并不一定是布尔值true, 假值也不一定是false。比如数字0是假值,数字10.1以及字符串"0"都是真值.

关于真假值得辨认可以看看这篇文章的介绍。

1和false,
+布尔值,!字符串 会进行类型转换啊。

一元正号运算符(+)位于其操作数前面,计算其操作数的数值,如果操作数不是一个数值,会尝试(就像使用 Number() 转型函数一样)将其转换成一个数值。

// 对于 Boolean 值,true 转为数值时为 1,false 则是转换为 0
+true; // 1

而后者,也就是逻辑非操作符(!),它总是会返回一个布尔值。因此,它会将操作数先转换为一个布尔值,然后对其进行取反。

// 非空字符串被转为布尔值时,为 true,对其取反则为 false
!"Lydia"; // false
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题