JavaScript字符串解析为false
为什么这两个问题都是错误的:JavaScript字符串解析为false,javascript,Javascript,为什么这两个问题都是错误的: console.log("potato" == false); //false console.log("potato" == true); //false 因为我知道在使用=松散比较时,JS强制操作数。既然在JS中,非空字符串应该是true,为什么上面返回false呢?您的意思是Truthy和Falsy值: if ("potato") { console.log("true") } 但是在这里比较字符串“potato”和一个true,JavaScript
console.log("potato" == false); //false
console.log("potato" == true); //false
因为我知道在使用
=
松散比较时,JS强制操作数。既然在JS中,非空字符串应该是true
,为什么上面返回false呢?您的意思是Truthy和Falsy值
:
if ("potato") {
console.log("true")
}
但是在这里比较字符串“potato”和一个true,JavaScript将尝试转换为一个可比较的东西,而在比较两个值时,情况并非如此。您的意思是
Truthy和Falsy值
:
if ("potato") {
console.log("true")
}
但是在这里比较字符串“potato”和一个true,JavaScript将尝试转换为一个可比较的东西,而在比较两个值时,情况并非如此。需要澄清一下
=
操作符。根据规则6、规则7和更高版本的规则4确定结果
规则6。如果类型(x)是布尔值,则返回比较结果tonNumber(x)==y
规则7。如果类型(y)是布尔值,则返回比较结果x==ToNumber(y)
规则4。如果Type(x)是Number,Type(y)是String,则返回比较结果x==ToNumber(y)
在您的上下文中,false
和true
将转换为0
和1
,而'potato'
将转换为NaN
,比较表达式的值始终为false
"potato" == false // => "potato" == 0 => NaN == 0
"potato" == true // => "potato" == 1 => NaN == 1
'' == false // => 0 == 0
'' == true // => 0 == 1
类似地,在'==true
比较中,'
将转换为0
,而true
将转换为1
,表达式为false
"potato" == false // => "potato" == 0 => NaN == 0
"potato" == true // => "potato" == 1 => NaN == 1
'' == false // => 0 == 0
'' == true // => 0 == 1
由于
==
的非直观实现,鼓励使用==
进行比较。需要对==
运算符进行澄清。根据规则6、规则7和更高版本的规则4确定结果
规则6。如果类型(x)是布尔值,则返回比较结果tonNumber(x)==y
规则7。如果类型(y)是布尔值,则返回比较结果x==ToNumber(y)
规则4。如果Type(x)是Number,Type(y)是String,则返回比较结果x==ToNumber(y)
在您的上下文中,false
和true
将转换为0
和1
,而'potato'
将转换为NaN
,比较表达式的值始终为false
"potato" == false // => "potato" == 0 => NaN == 0
"potato" == true // => "potato" == 1 => NaN == 1
'' == false // => 0 == 0
'' == true // => 0 == 1
类似地,在'==true
比较中,'
将转换为0
,而true
将转换为1
,表达式为false
"potato" == false // => "potato" == 0 => NaN == 0
"potato" == true // => "potato" == 1 => NaN == 1
'' == false // => 0 == 0
'' == true // => 0 == 1
由于
==
的非直观实现,鼓励使用==
进行比较。这里有一篇关于此主题的有用文章:@jakeclarkson您的评论应该作为正确答案发布+1.anyway@jakeclarkson当前位置从那里我无法理解这就是为什么在这里被问到。现在清楚了,谢谢大家。这里有一篇关于这个话题的有用文章:。@jakeclarkson你的评论应该作为正确答案发布+1.anyway@jakeclarkson当前位置从那里我无法理解这就是为什么在这里被问到。好了,谢谢大家。