Javascript&&运营商好像声明?

时间:2013-11-25 10:09:13

标签: javascript boolean boolean-expression

这应该是一个非常简单的问题,我无法在任何地方找到答案,所以以为我会节省一些时间并在这里问。

我正在查看一些javascript代码并注意到表单的表达式:

a < b && (other maths statements);

其他数学语句只是分配变量和简单的东西。

我的问题是这个。这是编写紧凑if语句的另一种方法吗?

我知道那句话吗?if-block:else-block;是一种方法,但作为&amp;&amp;是短路和左关联这是我能想到的。我知道你不能用这种方法阻止其他方法,但它非常整洁。

有人可以在早上的这个时候确认我已经醒了。

谢谢,

2 个答案:

答案 0 :(得分:7)

是的,你可以做到这一点。如果a小于b,则其他语句将执行。

那就是说,你可能不应该这样做。而不是试图为自己节省少量的打字,而应该使用更易读的代码,其目的很明显。毕竟,如果你需要检查你是不是误解了它,那么可能必须阅读或修改你的代码的其他程序员可能会遇到同样的问题。

如果您尝试执行多项任务,也存在一个陷阱,但其中一项中间任务是“假”值。考虑这个例子:

a < b && (a = 1) && (b = 0) && (c = 3);

基本上,如果a小于b,请将a设置为1,将b设置为0,将c设置为3.但是,{{{} 1}}返回false(转换为布尔值时0被视为false),因此(b = 0)部分永远不会执行。显然,有了这个基本的例子,任何对JavaScript有相当了解的人都可以知道它会失败,但是如果(c = 3)ab的值来自其他地方则会没有立即表明它不会一直有效。

答案 1 :(得分:1)

你可以使用这种类型的if-else语句来缩短代码,虽然在我看来它的可读性较差:

<强>的JavaScript

var el = document.getElementById('test'),
a = 1,
b = 0;

a>b && (el.innerHTML = "True") || (el.innerHTML = "False");

<强> HTML

<div id="test"></div>

An example jsFiddle

如果您将操作员从大于号切换到小于大于,则会在“测试”DIV内部显示“假”。