Javascript || 操作员

IT技术 javascript
2021-02-10 06:40:20

我正在使用一个大型 JS 库在画布中执行某些绘图操作。查看库代码(以进行适应更改),我遇到了“||” 运算符的使用方式当然不应计算为布尔值。这是否意味着这是一个不同的运营商,还是我遗漏了一些明显的东西?一个例子如下:

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

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

AND-Operator 也是如此,它也被称为guard-Operator。

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

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

var value = p && p.name; /* 如果 p 有值,则只会从 p 中检索 name 值,避免错误。*/

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

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

||运营商的计算结果为第一个操作数,如果它可以转换为true或最后一个操作数,否则。因此,在您的示例$time中,Date.now如果它存在或声明的函数不存在。

不是第一个可以转换为真的操作数。即使将转换为 false,也会使用最后一个表达式。
2021-03-31 06:40:20
第一个非 False 操作数,即。
2021-04-07 06:40:20

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

也可以说 DateTime.now 是 '', 0, false, null
2021-03-30 06:40:20

这是很常见的javascript。如果 Data.now 评估为真,则 $time 设置为该值,否则设置为该函数。

该函数没有将 () 附加到右大括号,因此 $time 被设置为该函数,而不是它的输出。
2021-03-16 06:40:20

||运算符用于$time在示例中为其分配值

如果Date.now计算结果为 false,则$time分配||运算符右侧的值(在本例中为函数)。如果Date.now评估为真,则它短路并将 Date.now 的值分配给$time