Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在这个JavaScript中使用这些条件运算符?_Javascript_Arrays_Object_Conditional - Fatal编程技术网

为什么在这个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的值,比如false0,那么即使需要x,也会得到y。因此,在使用这种表达式时必须小心。

如果在手册中查找
|
,它会变得很明显。或者在控制台上玩一下。
found_value = one_dict.get(first_key, {}).get(second_key, False)