Javascript var x=x | |{}是什么;
以下代码在java脚本中做什么:Javascript var x=x | |{}是什么;,javascript,Javascript,以下代码在java脚本中做什么: var x = x || {}; 如果x未定义(或null,或任何其他false值),它将成为一个空对象。将x分配给一个新的空对象,如果它是null(未定义,false),或者保留它的现有值,如果不是null值的真实性的布尔值,有时非常方便。您的长版本不正确:考虑X之前已定义的情况,并将其设置为 null 。代码>变量x=x | |{}会将x重新定义为一个对象,而var x=(typeof x!='undefined')?x:{}将不显示。但是前面的一段是正确
var x = x || {};
如果
x
未定义(或null,或任何其他false
值),它将成为一个空对象。将x
分配给一个新的空对象,如果它是null
(未定义,false),或者保留它的现有值,如果不是null
<124;
则是逻辑的或
表情
var x = x OR {};
应该会变得更加明显
如果x
有一个falsy值(比如null
,undefined
,0
,”
),我们将x
分配给一个空对象{}
,否则只保留当前值。这个长版本看起来像
var x = x ? x : {};
除非x被定义或赋值,否则它将以空对象作为默认值
就是
for example
x = 10
var x = x || {};
输出必须是
10
如果未指定x值。输出值必须是
undefined
如果定义了var x,则它将是定义的值。否则它将是空对象,如[object object]
例如,在以下代码块中,x将是10
:
var x = 10;
x = x || {}
但是,如果:
var x = x || {};
然后x
将成为[object object]
一个人不应该写“var x=x | |{};”本身
这与“var x={};”不同的唯一情况是,x以前在同一范围内初始化。这是不道德的。注:
function() {
x = {foo:"bar"};
var x = x || {};
}
与之相同,只是比
function() {
var x = {foo:"bar"};
x = x || {};
}
在这两种情况下,在全局范围内都没有对符号“x”的值的引用
此表达式是合法的惰性属性初始化习惯用法的一个混乱变体:
function( foo ) {
foo.x = foo.x || {};
foo.x.y = "something";
}
回答得很好。我是一个c程序员,这没有任何意义。如果这对你没有任何意义,那么你可能也会注意!!值返回表示“代码>值的真实性的布尔值,有时非常方便。您的长版本不正确:考虑X之前已定义的情况,并将其设置为<代码> null 。代码>变量x=x | |{}
会将x重新定义为一个对象,而var x=(typeof x!='undefined')?x:{}代码>将不显示。但是前面的一段是正确的。@Tim:true,我忘记了null==='object'
的类型。这个问题是旧的,另一个是重复的。JavaScript中的逻辑表达式从左到右求值,并使用以下规则测试可能的“短路”求值:false&(任何)短路评估为假。true | |(任何)短路评估为true。在上面的示例中,如果x为真,则x将成为指定的值。如果x为false或未定义,则第二个操作数将成为赋值{}。