Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中,对象值中的两条垂直线意味着什么?_Javascript_Operators - Fatal编程技术网

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

在javascript中,对象值中的两条垂直线意味着什么?,javascript,operators,Javascript,Operators,可能重复: 也许有人可以提供更好的代码片段,但下面的|是什么意思 var time = $(el).data('start') || new Date(); 它是还是运算符?如果是,一个变量可以有两个不同的值有什么意义?它的意思是“或”。在本例中,它将$(el).data('start')的值分配给变量时间,或者,如果该变量不存在或返回false,它将分配从新日期()返回的值。或者,正如Malovolio在评论中更清楚地指出的那样: …如果$(el).data('start')为“fals

可能重复:

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

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

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

它的意思是“或”。在本例中,它将
$(el).data('start')
的值分配给变量
时间
,或者,如果该变量不存在或返回
false
,它将分配从
新日期()返回的值。或者,正如Malovolio在评论中更清楚地指出的那样:

…如果
$(el).data('start')
为“falsy”(即未定义、null、0、false、空字符串或NaN),则计算
新日期()
并将其分配给
时间

逻辑运算符的重要方面:

逻辑运算符通常与布尔(逻辑)值一起使用;如果是,则返回一个布尔值。但是,&&和| |运算符实际上返回指定操作数之一的值,因此,如果这些运算符与非布尔值一起使用,则它们可能返回非布尔值

参考资料:


    • 它的意思是
      逻辑和
      <代码>变量时间=$(el).data('start')| | new Date()如果
      $(el).数据('start')
      将具有
      未定义的值
      值,则
      时间
      将具有
      新日期
      函数的值。

      这是一个
      运算符。您需要了解的是:

      • 在逻辑运算符中使用时,非布尔值将转换为布尔值。转换为
        false
        的值称为“falsy”,转换为
        true
        的值称为“truthy”。Falsy值包括
        0
        未定义的
        空值
        ,等等。更多信息请访问

      • 运算符短路:它不断计算表达式,直到找到
        为真的
        ,然后停止


      因此,
      var time=$(el).data('start')| | new Date()
      表示“将
      时间
      设置为
      el
      元素的
      开始
      数据,或者,如果这是错误的,则使用当前时间”。

      运算符| |的计算方式是,如果第一部分为真,则返回它。如果第一部分为false,则返回第二部分。 因此,上述表达式相当于:

      if ($(el).data('start')) {
        time = $(el).data('start');
      } else {
        time = new Date();
      }
      
      计算表达式1。如果exp1为真,则不评估exp2(称为短路评估)。如果exp1返回false,则计算exp2。如果exp1或exp2为真,则(exp1 | | exp2)的计算结果为真

      但是在Javascript中,可以使用操作符设置值

      a = something
      
      if (prop)
      
      a = prop
      
      可以重写为

      a = prop || something
      

      谢谢你,丹尼斯。
      逻辑和
      有何不同?对于落选者来说,什么地方写错了?为什么这个答案被落选?什么地方错了?是的,它不是完整的列表。最好说是可以转换为假的。如果$(el).data('start')返回未定义,则将执行该命令?还是假的?但这没有错。你的否决票只是为了好玩。谢谢@David,非常有帮助。现在就知道了。更准确地说,如果
      $(el).data('start')
      是“falsy”(即未定义、null、0、false、空字符串或
      NaN
      ),则计算
      new Date()
      并将其分配给
      time
      。奇怪的是,空列表和空对象不被认为是falsy.hi@apsillers,感谢您对“falsy”和“truthy”的解释。我以前听过这些,但从来都不知道它们是什么意思。简单明了-回答得很好。嗨@Esailija,谢谢你的推荐。我希望你采取的行动是删除这个问题,因为它和已经提问和回答的没有什么不同。我在谷歌上搜索到了与你提到的链接类似的东西,但没有找到任何使用“两个,双垂直线javascript”这样的关键字的东西。因为没有太多简单的英语,我决定问这个问题。
      a = prop || something