这是代码片段:
var prjId = navObj.itemId || navObj
这是否意味着 prjId 等于 navObj.itemId 或 navObj?那么变量等于导航对象意味着什么呢?
提前感谢您的回答!
这相当于以下内容:
var prjId;
if(navObj.itemId)
prjId = navObj.itemId;
else
prjId = navObj;
如果
navObj.itemId
设置为 false
或者根本没有定义,
prjId = navObj;
否则:
prjId = navObj.itemId;
.
不。
||
运算符首先尝试将 navObj.itemId
转换为布尔值。
如果它已经是布尔值,
true
,true
或0
以外的数字,非空字符串,或者不是NaN
或的对象,则会转换为null
undefined
。这些被称为“truthy”价值观。如果已经是布尔值
false
、false
、0
、空字符串、NaN
或null
,则会转换为undefined
。这些被称为“falsey”值。如果
navObj.itemId
是“truthy”,则navObj.itemId
被分配给prjId
,否则navObj
被分配给prjId
。
进一步阅读
它只是意味着,如果逻辑或运算符 (||) 的左操作数是真值,则返回它,否则返回右操作数。
以下值始终为假值:
因此,如果
navObj.itemId
不评估上述任何内容,那么它将被分配给 prjId
变量。
例如,当我们在函数中有可选参数时,这会被广泛使用。它是一种指定可选参数默认值的方法。但这当然不是它的唯一用途。
它将 prjId 设置为 navObj 上 itemId 的属性,如果存在(计算结果为“true”),如果不存在(或者计算结果为“falsy”),则 prjId 设置为 navObj。