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