【发布时间】:2013-02-19 21:50:54
【问题描述】:
我对使用&& 声明变量的实际应用感兴趣,如下所示:
var x = undefined && 4;
// Evaluate to the first falsey value
// or else the last value.
eval(x);
// undefined
我了解如何评估价值(请参阅this SO answer)。我也了解它的姐妹||(有关详细说明,请参阅here)以及为什么使用以下表达式声明变量会很有用:
// Some other variable
var y;
var x = y || 4;
// Evaluate to the first truthy value
// or else the last value.
实际上:使用第一个值,除非第一个值是假的;如果是这样,请使用最后一个值。我们可以在浏览器控制台中演示||的这个特性:
> null || 4
4
> 4 || null
4
> null || undefined
undefined
> undefined || null
null
> true || 4
true
> 4 || true
4
至于&&:
> null && 4
null
> 4 && null
null
> null && undefined
null
> undefined && null
undefined
> true && 4
4
> 4 && true
true
我们是否应该理解为:使用第一个值,除非第一个值是真实的;如果是,使用最后一个值吗?
我有兴趣使用编码快捷方式来尽量减少条件语句的使用,我想知道我是否能够以某种方式使用它。
我在jQuery核心源码的line 472找到了这种编码方式的例子:
scripts = !keepScripts && [];
所以问题是:任何人都可以描述在 javascript 变量声明中使用 && 的良好上下文吗?您认为这是不好的做法吗?
谢谢!
【问题讨论】:
-
我个人建议不要这样做:它真的不太可读。在不知道这种行为的情况下,我预计像
!keepScripts && []这样的东西会评估为false,这可能会导致一些难以追踪的错误。 -
我会编写普通的条件语句,然后使用高级压缩器,例如 Google Closure Compiler 来压缩代码。
标签: javascript