javascript,这个条件意味着什么? if(display || true){...}

时间:2015-08-19 14:57:40

标签: javascript boolean conditional-statements

display变量在实际功能中是可选的,但我不明白|| true

的含义

实际检查这种情况是什么? if(display || true){...}

if(display || true){
$("#container").html(this.displayReport(this.tabData, extraInfo || false));
}

4 个答案:

答案 0 :(得分:2)

||是一个逻辑操作,这意味着显示 true将始终为true。

您的代码实际上意味着XDocument something = connector.Run(serviceCredentials, connectorids, connectorkeys); ,而if是非常多余的。

答案 1 :(得分:1)

if(display || true)

此条件语句检查display的值是否为true。如果是,则该语句自动为真。如果display为false,则检查第二个条件。

如果一个条件或条件为真,则只有一个陈述必须为真。

在这种情况下,代码将始终返回true,因为其中一个语句为真。

答案 2 :(得分:1)

这是||作为合并运算符的错误用法。如前所述,这将始终返回true。但是,假设display是一个字符串,而不是布尔值。在那种情况下

var result = display || "(none");

将返回display,或者如果未设置display,则"(none)"

这利用了以下事实:在Javascript中,undefinednull都评估为false。这意味着当值被取消分配时,您可以使用||来返回“备份”值 - 左操作数为false,因此无论如何,评估结果都是正确的值。

编写代码示例的人可能会从一些旧代码或一些javascript手册中复制它,而不了解它实际上是如何工作的,以及为什么它在你的情况下不起作用。在这里要实现的关键是,false0 等值也评估为false - 因此在您的情况下,您确实会得到{{1} }}

请注意,true 按预期工作。只是extraInfo || false给你带来了麻烦。要解决此问题,只需使用

即可
true

如果未定义display,则类型敏感的比较将返回false,因此您将获得默认的 if (!(display === false)) 。否则,如果显示为true,则再次获得true,如果显示为true,则会获得false,即!true

答案 3 :(得分:1)

尝试改变,

if(display || true){
$("#container").html(this.displayReport(this.tabData, extraInfo || false));
}

if(true){
$("#container").html(this.displayReport(this.tabData, extraInfo || false));
}