【发布时间】:2012-02-06 19:43:03
【问题描述】:
可能重复:
What does “options = options || {}” mean in Javascript?
我偶然发现了这条线,但似乎无法弄清楚它的含义
var G = G || {};
有什么想法吗?
【问题讨论】:
标签: javascript
可能重复:
What does “options = options || {}” mean in Javascript?
我偶然发现了这条线,但似乎无法弄清楚它的含义
var G = G || {};
有什么想法吗?
【问题讨论】:
标签: javascript
G = G,如果G不存在,则创建为空对象。
【讨论】:
如果 G 未定义,则 G 是 G 或新对象 "falsy".
【讨论】:
如果G 当前是任何“假”值,那么对象字面量将被分配给G。
“虚假”值是...
undefinednull''NaNfalse0使用的运算符是逻辑或运算符。
它的工作方式是先计算左操作数。如果该操作数有一个“真实”值(任何非假值),它会返回它,并且不评估第二个操作数(短路)。
如果左操作数为“假”,则返回右操作数,而不管其值。
G 为假的示例...
// v--- Evaluate G. The value of G is the "falsey" value undefined...
var G = G || {};
// ^--- ...so evaluate and return the right hand operand.
G 真实的示例...
G = 123;
// v--- Evaluate G. The value of G is a "truthy" value 123...
var G = G || {};
// ^--- ...so return 123, and do not evaluate the right hand operand.
【讨论】:
G 不可能已经被初始化,那么|| 没有多大意义。有时人们会不必要地重新声明变量,或者声明已经声明为参数的变量,所以也许这就是这里发生的情况。
undefined 是声明变量的默认值。
{foo:'bar'},它评估它的“真实性”,确定它确实是“真实性”,所以它返回对象。因此,虽然它考虑其真实性,但它绝不会将操作数强制为布尔值。