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

问题描述 投票:0回答:5

这是代码片段:

var prjId = navObj.itemId || navObj

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

提前感谢您的回答!

javascript operators
5个回答
3
投票

这相当于以下内容:

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

3
投票

如果

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

prjId = navObj;

否则:

prjId = navObj.itemId;
.


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

进一步阅读


1
投票

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

以下值始终为假值:

  • 0
  • 空字符串
  • 未定义
  • NAN(不是数字)

因此,如果

navObj.itemId
不评估上述任何内容,那么它将被分配给
prjId
变量。

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.