'var a = a ||的目的是什么? {b:1}'语法

时间:2013-08-06 09:19:01

标签: javascript

我想知道更长的时间,以下是什么意思:

var a = a || { b : 1 }

如果'a'之前分配了任何属性......他们会消失。那么上面语法的目的是什么?

4 个答案:

答案 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)

如果afalsy,即(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