JavaScript中的IF条件 - 场景背后会发生什么

时间:2015-10-20 08:53:06

标签: javascript

我发现在JavaScript中,如果条件,可以在中使用裸字符串。我的意思是这样的:

var condition = "";
if (condition) {
    //we will never come here 
}

然而,对我来说这感觉非常奇怪,因为,例如,在Java中,这段代码无法编译。我试着理解场景背后的这个字符串发生了什么,但现在失败了。

你能解释一下这种情况会发生什么吗?

P.S。此外,如果变量 condition 根本没有初始化,那么它仍然很好,结果将是相同的。感觉JavaScript允许很多这些东西。

4 个答案:

答案 0 :(得分:0)

JavaScript不是强类型的。在这个例子中,这意味着解释器获取变量并尽可能地将其转换为布尔值。这意味着整数0,null,""和" 0" (我认为未定义)所有都被转换为false,而整数1," 1"和非null对象都转换为true。

答案 1 :(得分:0)

Javascript将""字符串转换为布尔值false

检查equallity and comparision

检查语言:

Static/Dynamic vs Strong/Weak

Wikipedia

答案 2 :(得分:0)

我理解你的问题,我也来自强大的背景。这里的Javascript概念是truthyfalsy

这里要理解的是Javascript使用类型强制,所以验证

if (condition) {}

其中condition初始化为字符串,将导致false

根据定义:虚假值是在布尔上下文中计算时转换为false的值。 假值的例子:

if (false)
if (null)
if (undefined)
if (0)
if (NaN)
if ('')

在Javascript中阅读truthy falsy,以便更好地理解。

答案 3 :(得分:0)

在javascript if(条件)中,条件是表达式,最终将转换为布尔类型,该语言定义为{{ 1}},undefinednullNaN0都会被转换为布尔 false ,您可以使用{{1}进行检查}运算符显式转换为布尔值,检查:

''

以上所有表达式 true ,此外,

!!

上述表达式也是 true

所以,在您的情况下,!!'' === false !!0 === false !!null === false !!undefined === false !!NaN === false == ''==0 null==undefined ,并将被投放到 false

这是javascript的神奇之处,并且已被广泛使用。