2012-03-10 43 views

回答

4

表达_a || []将返回_a如果是“truthy”,否则[](它被短路,所以只判断直到有的操作数是'真'的,或者他们都被评估过)。

这实质上是检查null。如果_a为空或未定义(或者为false,但在此方案中不可能),那么它将被初始化为一个空数组。

+0

重要的是要注意,下面的结果是错误的'truthy'检查(或者,我可以说'falsy'值):false,null,undefined,空字符串, 0','parseInt({})'(导致'NaN'是虚假的)。 – Marshall 2012-03-10 00:20:04

+0

@马歇尔:谢谢。我不是一位JS专家,在业余时间只是忙于此(我是系统人员)。我特意使用了'truthy',因为我认为我可能会错过一个或多个案例。再次感谢。 – 2012-03-10 00:25:36

+0

对于系统人员来说,这是一个坚实的答案。很多使用JavaScript的人甚至不理解真值;) – Marshall 2012-03-10 00:33:03

0

如果_a已经定义,然后使用它的值,否则初始化空数组

1

这使默认状态\值。如果当前范围中没有_a,或者它不是任何类型的真或值,则它将被创建为空数组。如果存在,它会被重新分配给自己,这不是一个很好的做法。它2例是有用的:

  1. 的方法(功能)的内部 - 的另一功能可能会返回一个阵列或空(例如)。如果你需要隐含数组的方法,你保证_a是一个数组:

    var _a = _a || [];

  2. 传递为参数 - 如果你需要传递数组作为参数。如果参数为null并且在方法内部隐式需要一个数组(这是分配一个默认参数),但它不应该覆盖参数。它必须被分配到一个新的变量(我认为这是因为下划线的情况下):

 
function doSomething (a, b, c) 
{ 
    ... 
    var _a = a || []; 
    ... 
}