或JavaScript对象声明的符号

Or symbol for JavaScript object declaration

本文关键字:符号 声明 对象 JavaScript      更新时间:2023-09-26

我刚开始阅读一些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"运算符类似,但有明显不同。它的真正含义是:

  1. 对左侧的子表达式求值
  2. 如果强制为布尔值时该值为true,则该子表达式的值(强制为布尔之前的)为||表达式的值
  3. 否则,计算右侧子表达式,并将其值作为||表达式的值

因此,它通常用于初始化可能已经初始化的东西:

var something = window.something || defaultValue;

意思是,"检查"something"是否是具有truthy值的window对象的属性,如果不是,则将其设置为defaultValue。"

代码中缺少一个重要的部分-变量声明:

var something = window.Example || {
    bleh: "123",
    blah: "ref"
}

这大致翻译为"将something设置为window.Example,除非它不存在,否则将其设置为这个新对象"。