堆栈溢出

我正在使用一个大的JS库在画布中执行某些绘图操作。 回顾库代码(以适应变化),我遇到了'||' 运算符的使用方式当然不应该评估为布尔值。 这是否意味着这是一个不同的操作员,还是我错过了明显的东西? 一个例子如下:

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

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


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

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

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

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

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

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

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


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

链接地址: http://www.djcxy.com/p/96345.html

上一篇: Stack Overflow

下一篇: How to create a jQuery plugin with methods?