在 javascript 中,对象值中的两条垂直线是什么意思?
What do two vertical lines in an object value mean in javascript?
可能的重复项:
什么 ||操作员呢?
也许有人可以提供更好的代码片段,但||
以下内容是什么意思?
var time = $(el).data('start') || new Date();
它是一个or
运算符吗?如果是,一个变量可以有两个不同的值有什么意义?
OR
运算符。您需要了解的是:
在逻辑运算符中使用非布尔值时,将转换为布尔值。 转换为
false
的值称为"假",转换为true
的值称为"真实"。假值包括0
、undefined
、null
等。更多信息请参阅Truthy and Falsy: When All is Not Equal in JavaScript。OR
运算符短路:它不断计算表达式,直到它找到true
表达式,然后停止。
因此,var time = $(el).data('start') || new Date();
的意思是"time
设置为el
元素的start
数据,或者,如果这是假的,请使用当前时间"。
exp1 || exp2
评估 exp1。如果 exp1 为真,则不计算 exp2(称为短路评估)。如果 exp1 返回 false,则计算 exp 2。如果 exp1 或 exp2 为真,则 (exp1||exp2) 的计算结果为 true。
但是在 Javascript 中,您可以使用运算符设置值。
a = something
if (prop)
a = prop
可以改写为
a = prop || something
它的意思是"或"。在这种情况下,它将 $(el).data('start')
的值分配给变量time
或者,如果该值不存在或返回 false
,则分配从 new Date()
返回的值。或者,正如马洛沃利奥在评论中更清楚地指出的那样:
。如果
$(el).data('start')
是"falsy"(即未定义、null、0、false、空字符串或 NaN),则评估new Date()
并将其分配给time
。
逻辑运算符的重要方面:
逻辑运算符通常与布尔(逻辑)值一起使用;当它们与布尔值一起使用时,它们返回布尔值。但是,&&&和||运算符实际上返回指定操作数之一的值,因此如果这些运算符与非布尔值一起使用,则它们可能会返回非布尔值。
引用:
- 逻辑运算符。
运算符 || 的计算方式是,如果第一部分为 true-ish,则返回它。如果第一部分是假的,则返回第二部分。因此,上述表达式等效于:
if ($(el).data('start')) {
time = $(el).data('start');
} else {
time = new Date();
}
表示logical sum
. var time = $(el).data('start') || new Date();
如果$(el).data('start')
将具有undefined
或false
值,则time
将具有来自new Date
函数的值。
- 带有超级下拉菜单的两条水平线
- 为什么我的画布上只显示两条线
- 如何:´postMessage´它能发送两条信息吗
- 使用 D3 的两条线之间的阴影区域
- Socket.io 无法连续发送两条消息
- JavaScript - 我想将两条信息分配给一个数组 - 我是否使用多维数组
- 在 javascript 中,对象值中的两条垂直线是什么意思?
- 在画布上移动两条以上的箭头线
- 如何使用整数值(不是向量)计算两条线之间的度数
- 试图通过两条线获得自定义和无限的猫头鹰轮播
- 如何在javascript中找到两条切线的交点
- 使用“开放层”自动绘制路径的第一条垂直线
- 使用d3来遮挡两条线之间的区域
- 制作'链接到'活跃在两条路线上,而不是一条
- 在SVG路径上生成内阴影效果元素/三角形的两条边
- 如何显示中间有延迟的两条消息
- 两条Bézier曲线(或两条曲线和一条直线)的交点:代码
- 我怎么知道两条线是否重叠?
- 求两条线段是否相交
- 制作一个矩形,知道边的两条垂直线(路径元素)的位置