Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.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 - Fatal编程技术网

Javascript | |运算符

Javascript | |运算符,javascript,Javascript,我使用一个大型JS库在画布中执行某些绘图操作。回顾库代码(为了进行适当的更改),我遇到了“| |”运算符的使用方式肯定不应该计算为布尔值。这是否意味着这是一个不同的操作员,或者我遗漏了一些明显的东西?例如: var $time = Date.now || function(){ return +new Date; }; 如果可以转换为true,则计算结果为第一个操作数,否则计算结果为最后一个操作数。因此,在您的示例中,$time将是Date。现在,如果它存在,则为,否则为声明的函数。这在jav

我使用一个大型JS库在画布中执行某些绘图操作。回顾库代码(为了进行适当的更改),我遇到了“| |”运算符的使用方式肯定不应该计算为布尔值。这是否意味着这是一个不同的操作员,或者我遗漏了一些明显的东西?例如:

var $time = Date.now || function(){
return +new Date;
};

如果可以转换为true,则计算结果为第一个操作数,否则计算结果为最后一个操作数。因此,在您的示例中,
$time
将是
Date。现在,如果它存在,则为
,否则为声明的函数。

这在javascript中非常常见。如果Data.now的计算结果为true,则$time被设置为true,否则它被设置为函数。

我相信代码是说如果
DateTime.now
变量不存在,则返回
+new Date

的结果。
|
操作符用于在示例中为
$time
赋值


如果
Date.now
的计算结果为false,则
$time
被分配到
|
运算符右侧的值(在本例中为函数)。如果
Date.now
的计算结果为true,那么它会缩短ciciuits并将Date.now的值赋给
$time

已经有了一个可接受的答案,但我想指出的是,OR运算符也称为默认运算符,因为它不返回布尔值,而是返回左手或右手参数

AND运算符也是如此,也称为guard运算符

查看以了解更多详细信息:

&&运算符通常称为逻辑and。它也可以被称为守卫。如果第一个操作数为false、null、undefined”(“空字符串”)或数字0,则返回第一个操作数。否则,它将返回第二个操作数。这为编写空检查提供了一种方便的方法:

var value=p&&p.name;/*名称值将被删除 只有在p有值时才能从p中检索,以避免错误*/

| |运算符通常称为逻辑or。它也可以称为默认值。如果第一个操作数为false、null、undefined”(“空字符串”)或数字0,则返回第二个操作数。否则,它将返回第一个操作数。这为指定默认值提供了一种方便的方法:

值=v | | 10;/*使用v的值,但如果v 没有值,请使用10*/


第一个非False操作数,即。不是第一个可以转换为true的操作数。即使最后一个表达式被转换为false,也会使用它。我猜它应该是if Date。现在由于某种原因返回了0,那么您应该将$time设置为函数的返回值…?@peirix:您猜错了$时间将是一个返回当前日期的函数。它被设置为Date的别名。现在,如果它被定义(非false)或提供的函数不是这样。啊,这就是为什么我没有将它设置为答案。无法对注释进行向下投票:p因此必须了解更多关于
日期的信息。现在
变量才能完全了解其工作原理,那么?它也可以是DateTime。现在是“”,0,false,null函数没有()附加到右大括号,因此$time被设置为函数,而不是它的输出。