这个Javascript代码是什么意思?

这个Javascript代码是什么意思?,javascript,Javascript,可能重复: 看看YouTube的来源 var yt = yt || {}; 那是不是意味着。。将yt设置为yt如果yt存在,是否创建新对象 如果是这种情况,我认为在声明变量时不能设置条件。Evaluateyt,如果它的计算结果为false,则将其实例化为对象 我第一次看到这样的事情是: function handleEvent(e){ e=e||window.event; } 非常漂亮~有人知道其他支持这种语法的语言吗?(不是PHP=(它的确切意思是:如果内容的计算结果不为fals

可能重复:

看看YouTube的来源

var yt = yt || {};
那是不是意味着。。将
yt
设置为
yt
如果
yt
存在,是否创建新对象


如果是这种情况,我认为在声明变量时不能设置条件。

Evaluate
yt
,如果它的计算结果为false,则将其实例化为对象

我第一次看到这样的事情是:

function handleEvent(e){
    e=e||window.event;
}

非常漂亮~有人知道其他支持这种语法的语言吗?(不是PHP=(

它的确切意思是:如果内容的计算结果不为false,则将其分配给自身(这是一个中性操作),否则创建一个新对象并将其分配给
yt
。它通常用于实例化要用作名称空间的对象,首先检查名称空间是否已存在。

是的,在分配之前首先计算表达式的整个右侧。因此,如果
yt==false
,则RHS上表达式的值将为
{}
并传递到
var yt
yt
的值分配回
yt
,除非它是
0
NaN
false
null
”或
未定义的
(即它是falsy),在这种情况下,将分配给


这是因为上面列表中的每个值在布尔表达式中的计算结果都是
false

为什么
yt
会是false?它看起来不像布尔变量。或者你的意思是false,因为在对象中还不存在?@marko false==undefined==null==0在Javascript中,条件不是
yt
是否为false,问题在于它是否是虚假的。除了虚假之外,还有一些东西是虚假的,包括(正如马尔科所提到的),
未定义
。这是一个什么是虚假的问题~谢谢@Matthew,我以前没有听说过
falsy
。看不,这不是它是否等于虚假,而是它是否虚假。不完全是。考虑一下:
var yt=NaN;yt=yt |{};
在这种情况下,
yt
@lwburk:是的,但它不是一个对象。这与它无关。空字符串是一个对象,将产生相同的结果。Hrm,也许我应该修改一下。确实
“”对象的实例
的计算结果为
false
。我仍然认为您的措辞不正确。如果
yt
是空字符串或
0
(或任何内容),则它显然存在。您忘记了空字符串:
布尔(''==false