0

我遇到了将逻辑操作数&&与对象一起使用,但是想知道表达式是否仅在处理对象时才以下面的方式进行评估。

代码示例

var sampleObject = {
            size: 10, 
            shoe: {
                make: "nike",
                model: "air jordon"
            },
            color: "red"
            }

    console.log(sampleObject.size && sampleObject.shoe.model);

出的console.log(sampleObject.size && sampleObject.shoe.model);回报air jordon。我的理解是,因为第一个条件 iesampleObject.size评估为 true 而不是falsely返回 object 中包含的值sampleObbject.shoe.model

4

2 回答 2

2

Javascript&&运算符首先计算其左操作数。如果它是一个假值,它是整个表达式的值。如果它是一个真值,则计算正确的操作数,并返回它。

零、空字符串、未定义和假都是假值。您的 sampleObject.size 值为 10,这是一个真实值,因此计算正确的操作数并将其用作整个表达式的值。

请注意,这些都不取决于作为对象的值。

于 2012-06-25T01:27:01.387 回答
2

和运算||&&从左到右运行。在 的情况下||,返回第一个真值。对于&&,它是第一个假值。在这两种情况下,如果没有找到合适的返回值,则返回最后一个。

因此,在这种情况下,它为表达式返回了一个真实值这一事实意味着sampleObject.sizesampleObject.show.model都是真实值。

于 2012-06-25T01:27:46.170 回答