为什么在这个JavaScript中使用这些条件运算符?

时间:2014-04-03 19:01:19

标签: javascript arrays object conditional

当我找到这两行时,我正在阅读一个网站的页面源代码:

var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];

在分配变量时,条件||运算符的意义是什么?值?我不明白为什么||将与空对象或空数组一起使用,以及它用于何种目的。

5 个答案:

答案 0 :(得分:1)

这样想:

var my_var = false || 34;
alert(my_var); //what do you see?

如果前一个条件为真,则会将其分配给my_var。否则,这将是第二个条件。

通过这种方式,可以保证他们拥有一个可以与脚本其余部分一起使用的对象。例如,Python在链接dict.get()调用时会执行此操作,以确保它不会爆炸。在这种情况下,如果我们需要搜索另一个字典的dict然后搜索那个第二个键,我们就可以这样做(作为例子):

found_value = one_dict.get(first_key, {}).get(second_key, False)

通过这种方式,我们保证如果在{d}中不存在first_key,我们至少会得到一个空的dict,以便第二个.get()来电不是&#39} ; t调用了错误的对象。

答案 1 :(得分:1)

评估x ||形式的表达式时y,如果x在转换为布尔值时求值为true,则结果为x。否则结果将为y。

通常这用作快捷方式:如果x有值,则返回x;否则返回y作为默认值。当然,“有价值”有点模糊。如果x的值是布尔值为false的值,例如 false 0 ,那么即使你想要x,你也会得到y。所以在使用这种表达时你必须要小心。

答案 2 :(得分:0)

这是说

的捷径

如果googletag未定义,请使用googletag else创建新的空对象

答案 3 :(得分:0)

分配undefined(可能导致各种问题)和有效空对象{}和空数组[]之间的区别。

答案 4 :(得分:0)

这会将googletag(例如)分配给自己或创建一个新的。

例如,如果googletag有值,googletag将是该值,否则为空对象