【发布时间】:2011-05-10 09:31:58
【问题描述】:
我经常在 Javascript 中使用以下构造:
var foo = other_var || "default_value";
在Javascript中,如果左边是假的,那么右边的值就会被赋值。
它非常方便,省去了编写更长且不必要的显式三元表达式的时间。
这种结构有名字吗?
奖励:在 PHP 中是否有不使用三元运算符的技巧?
PS:另一个变体是如果你没有得到一个真实的值就会抛出一个错误,而不是给出一个默认值:
var foo = something || alert("foo is not set!");
【问题讨论】:
-
感谢大家的回答,不得不选择一个,但都是正确的。当然这是逻辑 OR :) 也许“模式”这个词会更好地表达我的困惑观察。它非常方便,我以为人们可能已经在上面命名了。对我来说,这几乎就像一个模式。它非常易读且直观易懂。这几乎就像阅读简单的英语。正如 Kos 所观察到的,诀窍在于它完全取决于语言如何评估逻辑 OR。耻辱。
-
另一个例子。确保函数的不可接受的结果返回 false(或 null 等)通常很有用。但也许代码给出了 0 或 null(可能是您从底层框架调用的另一个例程)。所以你最终会得到类似
return var_result || false;的东西,如果代码的结果是真实的,它会按原样返回,否则你肯定会根据文档返回 false,或者为了你的 api 的一致性。但是,是的,它可以用三元运算符来完成,只是远没有那么酷。
标签: javascript expression variable-assignment logical-operators