【发布时间】:2011-10-30 10:05:40
【问题描述】:
有时我会在 javascript 代码中看到类似这样的内容:
var myObj = myObj || {};
那么,这里到底发生了什么?我想||运算符返回真或假,但它不正确。
【问题讨论】:
标签: javascript
有时我会在 javascript 代码中看到类似这样的内容:
var myObj = myObj || {};
那么,这里到底发生了什么?我想||运算符返回真或假,但它不正确。
【问题讨论】:
标签: javascript
了解 ||运算符,让我们首先看一个相当基本的示例。逻辑或运算符可用于为定义的变量提供默认值,如下所示:
var bar = false,
foobar = 5,
foo = bar || foobar; // foo = 5
在这种情况下,只有当 bar 被认为是虚假的时,才会为 foo 分配 foobar 的值。一个假值可以被认为等于 0、假、未定义、空、NaN 或空(例如“”)。
【讨论】:
您可以使用此构造来获取不是null、undefined 等的对象。这用于您稍后在需要它是对象的代码中使用myObj 的情况。如果由于某种原因,myObj 在此行之前未定义,则重新分配它会留下undefined 或null,在这种情况下,它将被分配{}。
你可以这样想:
// If the object is already defined
if (myObj)
var myObj = myObj;
// It was undefined or null, so assign an empty object to it.
else
var myObj = {};
【讨论】:
OR 运算 (||) 将返回第一个非空/假参数。
在指定的情况下,如果myObj为false或null,则设置为空对象({}括号用于创建对象)
【讨论】:
如果 myObj 未定义或为 null,则它会计算 || 右侧的表达式,从而创建一个新的空对象
所以myObj 如果不为 null,则为 myObj;如果 myObj 为 null,则为空对象
希望你明白我的意思
【讨论】:
myObj 的值为 false 或 0 或 NaN 或空字符串,它也会导致变量被分配一个新对象。它不是只是未定义或为空。 JavaScript 中有 6 个错误的东西。
||是短路算子。如果第一个操作数的计算结果为 true,则不计算第二个操作数。
因此 JS a || b 类似于 c# a ?? b
【讨论】:
这会初始化 myObj,除非它已经定义。
【讨论】:
|| 运算符在计算结果为真时返回左操作数,否则计算并返回右操作数。换句话说,a || b 等价于 a ? a : b,只是 a 只计算一次。
【讨论】:
??) 的 替换。 :) 我从未听说过 || 称为“空合并运算符;”它一直是“逻辑或”运算符。