【发布时间】:2011-02-28 00:51:44
【问题描述】:
可能重复:
What does “options = options || {}” mean in Javascript?
查看 YouTube 源...
var yt = yt || {};
这是否意味着.. 如果yt 存在,则将yt 设置为yt,否则创建一个新对象?
如果是这样的话,我不认为你可以在声明变量时加上条件。
【问题讨论】:
标签: javascript
可能重复:
What does “options = options || {}” mean in Javascript?
查看 YouTube 源...
var yt = yt || {};
这是否意味着.. 如果yt 存在,则将yt 设置为yt,否则创建一个新对象?
如果是这样的话,我不认为你可以在声明变量时加上条件。
【问题讨论】:
标签: javascript
将yt 的值分配回yt,除非它是0、NaN、false、null、"" 或undefined 中的任何一个(即它是 falsy),在这种情况下将{} 分配给yt。
之所以有效,是因为上面列表中的每个值都在布尔表达式中计算为 false。
【讨论】:
Boolean('') === false
确切的意思是:如果内容不评估为假,则将其分配给自身(这是一个中性操作),否则创建一个新对象并将其分配给yt。它通常用于实例化对象以用作命名空间,首先检查命名空间是否已经存在。
【讨论】:
var yt = NaN; yt = yt || {}; 在这种情况下yt 存在,但最终结果将是{}。
"" instanceof Object 的计算结果为 false。我仍然认为你的措辞不正确。如果yt 是空字符串或0(或其他),那么显然它存在。
评估yt,如果评估为假,则将其实例化为对象。
我第一次看到这样的东西是:
function handleEvent(e){
e=e||window.event;
}
非常漂亮~有人知道支持这种语法的其他语言吗? (不是 PHP =(
【讨论】:
yt 会是假的?它看起来不像布尔变量。或者你的意思是假的,因为对象还不存在?
yt 是否为假不是问题,而是它是否假。除了 false 之外,还有几件事是 falsy,包括(正如 Marko 所暗示的)undefined。
falsy。
是的,在赋值之前首先计算表达式的整个右侧。所以如果yt==false,RHS 上的表达式的值将是{} 并被传递给var yt
【讨论】: