这个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