Javascript || 操作者

我正在使用一个大的JS库在canvas中执行某些绘图操作。 审查图书馆的代码(以适应变化),我遇到了“||” 运算符以一种当然不应该评估为布尔值的方式来使用。 这是否意味着这是一个不同的运营商,或者我错过了明显的东西? 一个例子如下:

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

|| 如果操作数可以转换为真或最后一个操作数,则操作符求值为第一个操作数。 所以在你的例子中, $time将是Date.now如果存在的话)或者是声明的函数。

已经有一个可以接受的答案,但是我想提一下,OR运算符也称为Default-Operator,因为它不返回布尔值,而是返回左边或右边的参数。

AND运算符也称为守护运算符。

查看crockford关于JavaScript编程语言的调查了解更多详情:

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

var value = p && p.name; / *如果p有一个值,名称值将只从p中检索,避免错误。 * /

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

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

我相信代码是说如果DateTime.nowvariables不存在,而是返回+new Date的结果。

这是非常常见的JavaScript。 如果Data.now的计算结果为true,则$ time被设置为true,否则设置为该函数。

|| 在这个例子中,运算符被用来赋值$time

如果Date.now计算结果为false,则$time被分配给||的右边的值 运算符(在这种情况下是一个函数)。 如果Date.now计算结果为true,那么它会缩短并将Date.now的值赋值给$time