我发现在JavaScript中,如果条件,可以在中使用裸字符串。我的意思是这样的:
var condition = "";
if (condition) {
//we will never come here
}
然而,对我来说这感觉非常奇怪,因为,例如,在Java中,这段代码无法编译。我试着理解场景背后的这个字符串发生了什么,但现在失败了。
你能解释一下这种情况会发生什么吗?
P.S。此外,如果变量 condition 根本没有初始化,那么它仍然很好,结果将是相同的。感觉JavaScript允许很多这些东西。
答案 0 :(得分:0)
JavaScript不是强类型的。在这个例子中,这意味着解释器获取变量并尽可能地将其转换为布尔值。这意味着整数0,null,""和" 0" (我认为未定义)所有都被转换为false,而整数1," 1"和非null对象都转换为true。
答案 1 :(得分:0)
Javascript将""
字符串转换为布尔值false
检查语言:
答案 2 :(得分:0)
我理解你的问题,我也来自强大的背景。这里的Javascript概念是truthy
或falsy
。
这里要理解的是Javascript使用类型强制,所以验证
if (condition) {}
其中condition
初始化为字符串,将导致false
。
根据定义:虚假值是在布尔上下文中计算时转换为false的值。 假值的例子:
if (false)
if (null)
if (undefined)
if (0)
if (NaN)
if ('')
答案 3 :(得分:0)
在javascript if(条件)中,条件是表达式,最终将转换为布尔类型,该语言定义为{{ 1}},undefined
,null
,NaN
,0
都会被转换为布尔 false ,您可以使用{{1}进行检查}运算符显式转换为布尔值,检查:
''
以上所有表达式 true ,此外,
!!
上述表达式也是 true
所以,在您的情况下,!!'' === false
!!0 === false
!!null === false
!!undefined === false
!!NaN === false
== ''==0
null==undefined
,并将被投放到 false
这是javascript的神奇之处,并且已被广泛使用。