在 javascript 中,对象值中的两条垂直线是什么意思?

What do two vertical lines in an object value mean in javascript?

本文关键字:两条 垂直线 意思 是什么 javascript 对象      更新时间:2023-09-26

可能的重复项:
什么 ||操作员呢?

也许有人可以提供更好的代码片段,但||以下内容是什么意思?

var time =  $(el).data('start') || new Date();

它是一个or运算符吗?如果是,一个变量可以有两个不同的值有什么意义?

这是一个

OR运算符。您需要了解的是:

  • 在逻辑运算符中使用非布尔值时,将转换为布尔值。 转换为false的值称为"假",转换为true的值称为"真实"。假值包括0undefinednull等。更多信息请参阅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')将具有undefinedfalse值,则time将具有来自new Date函数的值。