或JavaScript对象声明的符号
Or symbol for JavaScript object declaration
我刚开始阅读一些JavaScript项目。大部分.js文件都有一个对象声明如下:
window.Example || {
bleh: "123";
blah: "ref"
}
||
符号在这里做什么?
Javascript中的对象是truthy,因此如果window.Example
是falsy(或未定义),则表达式计算为window.Example
或默认对象。示例:
var x = window.Example || {foo: 'bar'};
// x = {foo: 'bar'}, since window.Example is undefined
window.Example = {test: 1};
var y = window.Example || {foo: 'bar'};
// y = {test: 1}, since window.Example is truthy (all objects are truthy)
阅读这篇文章,获得关于真/假和短路评估的良好解释。
JavaScript中的||
运算符与其他类C语言中的"or"运算符类似,但有明显不同。它的真正含义是:
- 对左侧的子表达式求值
- 如果强制为布尔值时该值为
true
,则该子表达式的值(强制为布尔之前的)为||
表达式的值 - 否则,计算右侧子表达式,并将其值作为
||
表达式的值
因此,它通常用于初始化可能已经初始化的东西:
var something = window.something || defaultValue;
意思是,"检查"something"是否是具有truthy值的window
对象的属性,如果不是,则将其设置为defaultValue。"
代码中缺少一个重要的部分-变量声明:
var something = window.Example || {
bleh: "123",
blah: "ref"
}
这大致翻译为"将something
设置为window.Example
,除非它不存在,否则将其设置为这个新对象"。
相关文章:
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 直接在函数声明上使用function.prototype.bind
- 在.csv文件中写入学位符号
- 获取HTML属性中CSS声明的值
- 使用相同的数据集绘制各种符号
- 对API数据使用声明性绑定
- 将带点符号的属性(有时)传递给函数
- 可以Resharper在我的javascript函数声明中添加分号
- RegEx JavaScript:数字后的符号提取
- 如何为排除无穷大和NaN的数字声明Flow类型
- 此行是否包含函数声明
- Javascript以不同的方式声明数字
- 如何使用php文件中的GET来获取我在.js文件中声明的变量
- 如何在计算器符号为零时替换它
- 使用同一对象中的其他变量声明变量
- 如何在AngularJS工厂中正确声明对象属性
- 用||声明变量
- 或JavaScript对象声明的符号
- 带有美元符号的Javascript函数声明
- JavaScript中自我声明匿名函数之前的美元符号