【问题标题】:what does "object || {} " means in javascript?“object || {}”在javascript中是什么意思?
【发布时间】:2014-08-08 13:07:15
【问题描述】:

我在 javascript 应用程序中找到以下代码行。

var auth = parent.auth = parent.auth || {};

我知道现有的 Object parent 使用 auth Object 扩展,但我不明白 parent.auth || {} 在这里做什么。

【问题讨论】:

  • var newVar = false || null || true 会将true 分配给newVar。逻辑或运算符用于防止分配 falsy 值。如果parent.auth 是假的,或者不存在,则分配一个新的对象字面量

标签: javascript jquery javascript-objects


【解决方案1】:

这意味着如果parent.auth 的值是假的(false, 0, null, undefied 等) 然后将值{}(空对象) 分配给变量auth

【讨论】:

  • 但是为什么 parent.auth 被分配了两次
  • @Sandeepvashisth 这是因为 parent.auth 的值本身会用空对象更新,如果它是一个虚假值......所以一旦执行语句 parent.auth 将有一个非虚假价值
  • @Sandeepvashisth 也许阅读operator precedence 有助于更好地理解这一点?
【解决方案2】:

||是或,如果 parent.auth 未定义,则代码返回一个空对象。

就像检查是否为空,如果为空则创建一个新对象(来自 java/c#)。

【讨论】:

    【解决方案3】:

    parent.auth || {} 表示如果 parent.auth 未定义,在布尔情况下为 null 或 false,则将初始化并分配新的空对象。

    或者你可以这样理解:

    var auth;
    if(parent.auth){       
        auth=parent.auth;   
    } else {
        auth={};   
    }
    

    【讨论】:

    • @sp00m 第二种方法解释相同。很明显!!
    • @Mr_Green 你是什么意思?我只是想补充一点,0、"" 或 NaN 将被评估为 false(即 falsy)以及 null、false 或 undefined。
    • @sp00m 我上面评论中的大写字母意味着很明显,这六种类型的 falsies 将被评估为 false,但不会像我对你大喊大叫一样。 :)
    猜你喜欢
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    • 2015-07-15
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    相关资源
    最近更新 更多