I was wondering for a longer time what the below means:
var a = a || { b : 1 }
if 'a' had any properties assigned before... they dissapear. So what is a purpose of the above syntax ?
I was wondering for a longer time what the below means:
var a = a || { b : 1 }
if 'a' had any properties assigned before... they dissapear. So what is a purpose of the above syntax ?
我喜欢这种语法。在我看来,它非常优雅。
解释很简单。您在这里拥有的是使用||(或)运算符的条件表达式。这将根据条件的结果为变量赋值。
在这种情况下,条件是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使用默认名称。
if ais falsy即 (false, 0, undefined, null, "", NaN) 为其分配默认{ b : 1 }值
代码将对象分配{ b: 1 }给a如果a未定义。
a || { b: 1 }表示a或{ b: 1 },||运算符返回第一个为真的操作数。因此,如果a已定义,它将返回a,否则将返回{ b: 1 }(因为这是真的)。
如果a已经分配了一些值,那么它将采用该值,否则它将分配对象{b:1}到a.