为什么在这个JavaScript中使用这些条件运算符?
我在阅读一个网站的页面源代码时,发现了以下两行代码:为什么在这个JavaScript中使用这些条件运算符?,javascript,arrays,object,conditional,Javascript,Arrays,Object,Conditional,我在阅读一个网站的页面源代码时,发现了以下两行代码: var googletag = googletag || {}; googletag.cmd = googletag.cmd || []; 分配变量值时,条件|运算符的意义是什么?我不明白为什么|会与空对象或空数组一起使用,以及它的用途。这是一个表达 如果googletag不是未定义的,那么使用googletag else创建一个新的空对象这是分配未定义的,这可能会导致各种问题,与有效的空对象{}和空数组[]之间的区别,这将分配google
var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
分配变量值时,条件
|
运算符的意义是什么?我不明白为什么|
会与空对象或空数组一起使用,以及它的用途。这是一个表达
如果googletag不是未定义的,那么使用googletag else创建一个新的空对象这是分配
未定义的
,这可能会导致各种问题,与有效的空对象{}
和空数组[]
之间的区别,这将分配googletag
(例如)或创建一个新的
例如,如果谷歌标签
有值,则谷歌标签
将是该值,否则空对象如下所示:
var my_var = false || 34;
alert(my_var); //what do you see?
如果前一个条件为真,则该条件将分配给my\u var
。否则,这将是第二个条件
这样,就可以保证他们有一个可以与脚本其余部分一起使用的对象。例如,Python将在链接dict.get()
调用时执行此操作,以确保不会崩溃。在本例中,如果我们需要在一个dict中搜索另一个dict,然后在该dict中搜索第二个键,我们可以这样做(作为示例):
通过这种方式,我们保证如果dict中不存在
first_key
,我们至少会得到一个空的dict
,这样第二个.get()
调用就不会在错误的对象上调用。当计算形式为x | y的表达式时,如果x转换为布尔值时计算结果为true,则结果将为x。否则结果将是y
通常这是一个快捷方式:如果x有值,返回x;否则,返回y作为默认值。当然,“有价值”有点模糊。如果x的值是布尔值为false的值,比如false或0,那么即使需要x,也会得到y。因此,在使用这种表达式时必须小心。如果在手册中查找
|
,它会变得很明显。或者在控制台上玩一下。
found_value = one_dict.get(first_key, {}).get(second_key, False)