首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何推断"config.headers = config.headers既要{};“

如何推断"config.headers = config.headers既要{};“
EN

Stack Overflow用户
提问于 2014-11-26 03:05:23
回答 2查看 94关注 0票数 0

我不知道以下声明的操作过程。

代码语言:javascript
复制
 var x = x || {}; 

我认为它所做的就是

如果存在x,则将其赋值为var x,如果不赋值为null。“未定义的\ null?”

为什么我们需要后面的“禁闭”部分?

一个链接到教训或很少的帮助将是grrreat!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-26 05:27:18

您可能知道||&&是OR,并且在条件下。它们的工作方式是“短路评估”,这意味着||将停止计算,并在任何表达式(从最左边开始)计算为true时立即返回最后一个表达式。(换句话说:因为只有一个表达式是真的,所以只要其中任何一个都是真的,我们就可以立即停止。)另一方面,当任何表达式求值为false时,&&都会停止计算(因此,只要它的任何部分都是假的,整个复合词就不可能是真的)。换句话说,&&将继续评估这些术语,只要它们是true||,只要这些术语是false

现在,我们不仅可以在条件下使用这些操作符,而且可以在代码中的任何地方使用这些操作符。例如,a && b();等同于if-子句if (a) b();。类似地,||可以用于"is to“:a || b();相当于if (!a) b();

由于||从计算结果为true的左侧返回第一个项的值,因此我们可以在右侧使用这个值,以便分配一个默认值(如果前面的项将计算给false):

代码语言:javascript
复制
a = b || c;

等于

代码语言:javascript
复制
if (b) {
    a = b;
}
else {
    a = c;
}

我们可以用任意数目的条件来做到这一点:

代码语言:javascript
复制
var api = window.webAPI || window.webkitWebAPI || window.mozWebAPI;

(这将计算为假设的"window.webAPI",或者,如果未定义,则查找"webkitWebAPI“,然后查找”mozWebAPI“)。

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

代码语言:javascript
复制
var x;
if (!x) x = {};

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

票数 0
EN

Stack Overflow用户

发布于 2014-11-26 03:34:40

nullundefined在任何地方都不涉及这个问题。

所有这些操作都是将x设置为{}值,如果x是"falsy“值的话。{}是一个空对象文本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27140625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档