如何推断“config.headers = config.headers ||{};".

How to infer "config.headers = config.headers || {};"

本文关键字:headers config quot 何推断      更新时间:2023-09-26

我没有得到以下语句的操作过程。

 var x = x || {}; 

我认为它的作用是

如果 x 存在,则将其分配给变量 x,如果不分配 null。"未定义 ||空?

为什么我们需要后面的" ||空"部分?

课程链接或很少的帮助将是 grrreat!

nullundefined不会在任何地方进入这个。

如果x是"假"值,则x设置为值{}{}是一个空对象文本。

你可能知道||&&在条件下是OR和AND。它们通过"短路评估"工作,这意味着一旦任何表达式(从最左侧开始)计算结果为 true||将停止计算并返回最后一个表达式。(换句话说:由于只需要一个表达式为真,整个化合物的计算结果为真,我们可以在它们中的任何一个为真时立即停止。另一方面,一旦任何表达式计算为false&&就会停止计算(因此,一旦其任何部分为假,整个化合物就不可能为真)。换句话说,只要条款true&&就会继续评估条款,只要条款false||

现在,我们不仅可以在条件中使用这些运算符,还可以在代码中的任何位置使用这些运算符。例如a && b();等效于 if 子句if (a) b(); 。同样,|| 可用于"不是":a || b();等同于 if (!a) b();

由于 || 返回左起计算结果为 true 的第一个项的值,我们可以在右侧使用它来分配默认值(以防前一项的计算结果为 false):

a = b || c;

相当于

if (b) {
    a = b;
}
else {
    a = c;
}

我们可以使用任意数量的术语来执行此操作:

var api = window.webAPI || window.webkitWebAPI || window.mozWebAPI;

(这将评估假设的"window.webAPI",或者,如果未定义,则查找"webkitWebAPI",然后查找"mozWebAPI"。

var x = x || {};的情况下,构造只是确保x是某物(显然是类似对象的东西),如果不是,则使其成为空对象({})。它等效于 if 子句

var x;
if (!x) x = {};

那么,我们为什么要使用它呢?显然,当第一次遇到时,它会将变量x初始化为空对象。但它这样做是有条件的:如果之前设置了x,它会保留x的值。此外,由于我们在同一子句中将x声明为变量,因此我们确保不会命中未声明的标识符(在另一行上保存额外的声明)。