为了账号安全,请及时绑定邮箱和手机立即绑定

为什么if(“ string”)评估“ string”为真,但if(“ string” == tru

为什么if(“ string”)评估“ string”为真,但if(“ string” == tru

慕婉清6462132 2019-12-03 15:57:22
给出以下代码:if ("string") {    console.log('true!');}//logs "true" to the consoleif ("string"==true) {    console.log('true!');}//doesn't log anything为什么会这样?我以为"string"布尔值会被强制转换为数字。因此true变得1和"string"变NaN。第二条if语句很有意义,但是我不明白为什么第一条语句会导致内部循环被求值。这里发生了什么?
查看完整描述

3 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

非空字符串是真实的,但不一定等同于true。


==是“软”相等运算符。

它使用强制类型将两个等效对象进行相等比较。


以下所有条件都是正确的:


42 == "42"

0 == false

0 == ""

[] == ""

{} == "[object Object]"

"1" == true

Aribtrary字符串不等于任何原始值。然而


当您编写时if (something),if将执行if something是“ truthy”。


除以下内容外,所有值都是真实的:


false

0

NaN

""

null

undefined


查看完整回答
反对 回复 2019-12-03
  • 3 回答
  • 0 关注
  • 584 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信