jAn*_*ndy 42
||是合乎逻辑的OR.
表达方式
var x = x OR {};
Run Code Online (Sandbox Code Playgroud)
应该变得更加明显.
如果x有一个falsy值(如null,undefined,0,""),我们分配x一个空的对象{},否则只要保持当前值.这个版本很长
var x = x ? x : {};
Run Code Online (Sandbox Code Playgroud)
永远不应该写“var x = x || {};” 本身。
唯一与“var x = {};”不同的情况 是 x 先前在同一范围内初始化的时间。这是不道德的。笔记:
function() {
x = {foo:"bar"};
var x = x || {};
}
Run Code Online (Sandbox Code Playgroud)
与相同,只是更令人困惑,
function() {
var x = {foo:"bar"};
x = x || {};
}
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,全局范围内都没有对符号“x”的值的任何引用。
这个表达式是合法的惰性属性初始化习惯用法的混淆变体:
function( foo ) {
foo.x = foo.x || {};
foo.x.y = "something";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18409 次 |
| 最近记录: |