以下是代码段:
var prjId = navObj.itemId || navObj
这是否意味着prjId等于navObj.itemId或navObj?这意味着变量等于导航对象是什么意思?
提前感谢您的回答!
答案 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
,除true
或0
以外的数字,它将转换为NaN
,非空字符串或不是null
或undefined
的对象。这些被称为“ truthy ”值。
如果它已经是布尔值false
,false
,0
,则为空字符串NaN
,它将转换为null
或undefined
。这些被称为“ falsey ”值。
如果navObj.itemId
是“ truthy ”,navObj.itemId
会被分配到prjId
,否则navObj
会被分配给prjId
。
进一步阅读
答案 3 :(得分:1)
它只是意味着如果逻辑或运算符(||)的左操作数是一个真值,则返回它,否则返回右操作数。
以下值始终是假的:
因此,如果navObj.itemId
未评估上述任何内容,则会将其分配给prjId
变量。
例如,当我们在函数中有可选参数时,这被广泛使用。这是一种为可选参数指定默认值的方法。但当然,这不是它的唯一用途。
答案 4 :(得分:0)
它将prjId设置为navObj上itemId的属性,如果它存在(评估为'truthy'),如果它不存在(或者它的计算结果为'falsy'),则prjId设置为navObj。