JavaScript &&运算符用于返回

Cle*_*ent 5 javascript

我正在努力了解JavaScript库,并且遇到了以下语句:

const assetsManifest = process.env.webpackAssets && JSON.parse(process.env.webpackAssets)

然后在库中,它assetsMannifest像对象一样使用

assetsManifest['/vendor.js']

我认为&&运算符仅用于返回boolean逻辑检查中的值。有人可以告诉我这是怎么回事吗?

非常感谢,

克莱门特

Krz*_*ski 8

此运算符并不总是返回trueor false。它不像在其他一些编程语言中那样工作。在 JavaScript 中,&&如果为则返回第一个值,否则返回第二个值。

例子:

null && 5返回null因为null假的

"yeah yeah" && 0返回0是因为每个字符串都是真实的

不那么明显:-)

进一步阅读:

为什么逻辑运算符(&& 和 ||)不总是返回布尔结果?


ixp*_*pl0 5

&&返回第一个值转换为false或最后一个值转换为true。这是因为如果第一个值为,则无需使用&&来计算完整的逻辑条件falsy

console.log(55 && 66);
console.log(0 && 77);
console.log(88 && 0);
Run Code Online (Sandbox Code Playgroud)

您也可以使用&&||作为if运算符:

if (itsSunny) takeSunglasses();
Run Code Online (Sandbox Code Playgroud)

等于

itsSunny && takeSunglasses();
Run Code Online (Sandbox Code Playgroud)