0

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 ?

4

4 回答 4

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使用默认名称。

于 2013-08-06T09:23:19.557 回答
3

if ais falsy即 (false, 0, undefined, null, "", NaN) 为其分配默认{ b : 1 }

于 2013-08-06T09:21:24.593 回答
1

代码将对象分配{ b: 1 }a如果a未定义。

a || { b: 1 }表示a{ b: 1 }||运算符返回第一个为真的操作数。因此,如果a已定义,它将返回a,否则将返回{ b: 1 }(因为这是真的)。

于 2013-08-06T09:21:05.097 回答
0

如果a已经分配了一些值,那么它将采用该值,否则它将分配对象{b:1}a.

于 2013-08-06T09:22:59.887 回答