或JavaScript对象声明的符号
我刚开始阅读一些JavaScript项目。大多数以.js文件开头的文件都声明了如下对象:或JavaScript对象声明的符号,javascript,Javascript,我刚开始阅读一些JavaScript项目。大多数以.js文件开头的文件都声明了如下对象: window.Example || { bleh: "123"; blah: "ref" } |符号在这里做什么?该代码缺少一个重要的部分-变量声明: var something = window.Example || { bleh: "123", blah: "ref" } 这大致可以翻译为“将某物设置为窗口。示例,除非它不存在,否则将其设置为这个新对象”。Javascript中的对象
window.Example || {
bleh: "123";
blah: "ref"
}
|
符号在这里做什么?该代码缺少一个重要的部分-变量声明:
var something = window.Example || {
bleh: "123",
blah: "ref"
}
这大致可以翻译为“将
某物设置为窗口。示例,除非它不存在,否则将其设置为这个新对象”。Javascript中的对象是真实的,因此表达式的计算结果要么是窗口。如果窗口,则是示例或默认对象。示例是虚假的(或未定义的)。例如:
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和短路评估的详细说明。JavaScript中的|
运算符类似于其他类似C语言中的“or”运算符,但它明显不同。这真的意味着:
计算左侧的子表达式
如果强制为布尔值时,该值为true
,则该子表达式的值(强制为布尔值之前)是|
表达式的值
否则,计算右侧子表达式并将其值作为| |
表达式的值
因此,习惯用法是初始化可能已经初始化的内容:
var something = window.something || defaultValue;
只是意味着,“检查“something”是否是带有真实值的window
对象的属性,如果不是,则将其设置为defaultValue。”这是无效的JavaScript。但是这个问题以前已经被问过一千次了,所以。如果您的窗口中有属性,请小心使用此技术。例如
属性可以是0、空字符串、false等@MikeSamuel感谢您纠正我的打字错误:-)@user1240679感谢您让我知道!它需要一个尾随的正斜杠哈哈。我修好了。