我刚开始阅读一些JavaScript项目。大部分的js文件的开始与有一个对象声明如下:或JavaScript对象声明的符号
window.Example || {
bleh: "123";
blah: "ref"
}
什么是||
符号在这里做?
我刚开始阅读一些JavaScript项目。大部分的js文件的开始与有一个对象声明如下:或JavaScript对象声明的符号
window.Example || {
bleh: "123";
blah: "ref"
}
什么是||
符号在这里做?
Javascript中的对象是真实的,因此如果window.Example
是虚假(或未定义),则表达式计算结果为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)
读对truthy/falsy和短路评价一个很好的解释。
我认为链接被破坏。 – user1240679 2012-03-27 18:22:23
@ user1240679谢谢你让我知道!它需要一个尾随正斜杠哈哈。我修好了它。 – Paulpro 2012-03-27 18:32:21
有从代码中缺少一个重要的一点 - 变量声明:
var something = window.Example || {
bleh: "123",
blah: "ref"
}
这大致翻译为“设置something
到window.Example
,除非它不存在,然后将其设置到这个新的对象”。
JavaScript中的||
运算符是像其他类似C语言中的“或”运算符,但它明显不同。它的意思是:
true
,则该子表达式的值(之前胁迫布尔值)是||
表达||
表达式的值。因此它的使用惯用初始化一些可能已经被初始化:
var something = window.something || defaultValue;
只是手段,“请检查‘东西’是一个truthy值window
对象的属性,以及如果不是,则将其设置为defaultValue。“
@MikeSamuel感谢您解决我的错别字:-) – Pointy 2012-03-27 18:12:39
这不是有效的JavaScript。但是在SO上这已经被问过一千次了。 – 2012-03-27 18:06:30
使用这种技术时要小心,如果你的'window.Example'属性可以是0,空字符串,假等。 – jbabey 2012-03-27 18:12:50