我想知道更长的时间,以下是什么意思:
var a = a || { b : 1 }
如果'a'之前分配了任何属性......他们会消失。那么上面语法的目的是什么?
答案 0 :(得分:6)
我喜欢这种语法。在我看来,它非常优雅。
解释相当简单。你在这里有一个使用||
(或)运算符的条件表达式。这将根据条件的结果为变量赋值。
在这种情况下,条件为a || { b : 1 }
,因此如果已定义变量a
(即不等于假值),则变量a
将被保留不变。但是,如果尚未定义a
,则会为其分配对象文字{ b : 1 }
的值。
这种语法方法通常用于定义默认值。
例如:
function say_hello( name ){
var the_name = name || 'Dude';
alert( "Hello, " + the_name );
}
say_hello( "Lix" ); // OUTPUTS: Hello, Lix
say_hello(); // OUTPUTS: Hello, Dude
如果参数name
尚未传递给函数,则将使用默认名称Dude
。
答案 1 :(得分:3)
如果a
是falsy,即(false,0,undefined,null,“”,NaN)为其分配默认值{ b : 1 }
答案 2 :(得分:1)
如果{ b: 1 }
未定义,则代码会将对象a
分配给a
。
a || { b: 1 }
表示a
或{ b: 1 }
,||
运算符返回第一个操作数,即true。因此,如果a
定义它将返回a
,否则它将返回{ b: 1 }
(因为这是真的)。
答案 3 :(得分:0)
如果a
已经分配了某个值,那么它将获取其他值,否则它会将对象{b:1}
分配给a
。