这个javascript代码段是什么意思?

时间:2014-02-07 16:14:11

标签: javascript

以下是代码段:

var prjId = navObj.itemId || navObj

这是否意味着prjId等于navObj.itemId或navObj?这意味着变量等于导航对象是什么意思?

提前感谢您的回答!

5 个答案:

答案 0 :(得分:3)

如果navObj.itemId设置为false或者根本没有定义,

prjId = navObj;

否则:

prjId = navObj.itemId;

答案 1 :(得分:3)

这相当于以下内容:

var prjId;
if(navObj.itemId)
    prjId = navObj.itemId;
else
    prjId = navObj;

答案 2 :(得分:2)

没有。 ||运算符首先尝试将navObj.itemId转换为布尔值。

  • 如果它已经是布尔值true,除true0以外的数字,它将转换为NaN,非空字符串或不是nullundefined的对象。这些被称为“ truthy ”值。

  • 如果它已经是布尔值falsefalse0,则为空字符串NaN,它将转换为nullundefined。这些被称为“ falsey ”值。

如果navObj.itemId是“ truthy ”,navObj.itemId会被分配到prjId,否则navObj会被分配给prjId

进一步阅读

答案 3 :(得分:1)

它只是意味着如果逻辑或运算符(||)的左操作数是一个真值,则返回它,否则返回右操作数。

以下值始终是假的:

  • 0
  • 空字符串
  • undefined
  • NAN(不是数字)

因此,如果navObj.itemId未评估上述任何内容,则会将其分配给prjId变量。

例如,当我们在函数中有可选参数时,这被广泛使用。这是一种为可选参数指定默认值的方法。但当然,这不是它的唯一用途。

答案 4 :(得分:0)

它将prjId设置为navObj上itemId的属性,如果它存在(评估为'truthy'),如果它不存在(或者它的计算结果为'falsy'),则prjId设置为navObj。