这在javascript中是什么:"var var1 = var1 || []"

Sha*_*aoz 8 javascript

我只是想增加我的核心JavaScript知识.

有时我看到这个陈述,但我不知道它的作用:

var var1 = var1 || [];
Run Code Online (Sandbox Code Playgroud)

它意味着什么和/或它是什么,以及如何使用它?

谢谢.

Sas*_*gov 11

基本上,它看起来是否var1已经存在变量并且是"真实的".如果是,则为局部var1变量赋值; 如果没有,它将被分配一个空数组.

这是有效的,因为JavaScript ||运算符返回第一个真值操作数的值,如果没有真值则返回最后一个真值.如果它是真实的或其他方式var1 || var2返回.var1var2

这里有些例子:

var somevar;
somevar = 5 || 2; // 5
somevar = 0 || 2; // 2
somevar = 0 || null; // null
Run Code Online (Sandbox Code Playgroud)

价值观是不是"truthy": , ,false,,0 (空字符串),和.与其他语言不同,空数组和对象在JavaScript中被认为是真实的.undefinednull""NaN


cam*_*aca 7

var1如果它的布尔表示为假(例如它尚未初始化),它会为其分配一个空数组.

  • JS中的虚假值:http://www.joeyjavas.com/2007/08/04/javascript-true-false-checking-for-boolean-values/.我会说,如果"价值不是真的",但...... (2认同)

Z. *_*tev 5

基本上如果var1NULLfalse,var1将被设置为空array.

  • 错误值列表不完整.请参阅http://www.joeyjavas.com/2007/08/04/javascript-true-false-checking-for-boolean-values/(同样,null是关键字,NULL只是一个标识符) (3认同)

Ros*_*ron 4

JavaScript 中的逻辑运算符实际上计算两个对象之一。当您使用a || b它时,它会评估bifa为 false,或aifa为 true。因此,a || []如果aa任何值,则为真,或者[]如果a是任何值,则为假。

使用起来更加明显if (!a) { a = [] };

  • 不是假,而是“假”。差异很微妙但很重要。JavaScript 中的假值可以是 0、null、false、空字符串、未定义或 NaN。`空|| 5` 返回 `5`,即使 `null != false`。 (3认同)