var FOO = FOO ||如何Javascript中的{} idiom工作? [英] How does the var FOO = FOO || {} idiom in Javascript work?

查看:62
本文介绍了var FOO = FOO ||如何Javascript中的{} idiom工作?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

从这个问题:什么是var FOO = FOO || {}" (将变量或空对象分配给该变量)是指Javascript?

我已经知道 var FOO = FOO || {} 本质上意味着如果存在FOO,则保持不变,否则将其设为空对象。

I've learned that var FOO = FOO || {} essentially means "If FOO exists, then leave it untouched, else make it an empty object".

但是如何?

这就是我解析这种语法的方法:

This is how I would parse this syntax:

var FOO =(FOO || { })

所以:如果 FOO 存在并且评估为布尔值True,然后(FOO || {})将返回True,因此最终 FOO 将被完全覆盖并保持布尔值从现在起的真值。

So: If FOO exists AND evaluates to Boolean value of True, then (FOO || {}) will return True, so eventually FOO will be completely overwritten and will hold the Boolean value of True from now on.

否则(FOO || {})将返回任何布尔值 {} evalueates to。由于 {} 的空对象总是计算为True ...

Else (FOO || {}) will return to whatever Boolean value {} evalueates to. Since an empty object, which {} is, always evaluates to True...

然后在任何情况下(FOO || {})应该评估为True,所以......

Then in ANY case (FOO || {}) should evaluate to True, so...

在任何可能的情况下,评估后 var FOO = FOO || {} ,FOO应该保持普通的布尔值True,无论之前持有什么。基本上,根据我的理解, var FOO = FOO || {} 应相当于 var FOO = True

In ANY POSSIBLE CASE, after evaluating var FOO = FOO || {}, FOO should hold the trivial Boolean value of True, regardless of whatever it was holding before. Essentially, to my understanding, var FOO = FOO || {} should be equivalent to var FOO = True.

我的错误在哪里?

推荐答案


如果FOO存在且评估为布尔值True,则(FOO || { })将返回True

If FOO exists AND evaluates to Boolean value of True, then (FOO || {}) will return True

这不是 || 运算符的方式适用于JS。

That isn't how the || operator works in JS.

正确的解释是:

如果左侧是真值,请评估作为左侧(即 FOO ),否则评估为右侧(即 {} )。

If the left hand side is a true value, evaluate as the left hand side (i.e. FOO), otherwise evaluate as the right hand side (i.e. {}).

var zero = 0;
var one = 1;
var two = 2;

console.log(zero || two);
console.log(one || two);

这篇关于var FOO = FOO ||如何Javascript中的{} idiom工作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆