我遇到了对象使用逻辑操作数&&
,但是想知道只有在处理对象时才以下面的方式计算表达式。
代码示例
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
。我的理解是,因为第一个条件,即sampleObject.size
被评估为真,并且不是falsely
,它返回对象sampleObbject.shoe.model
中包含的值。
答案 0 :(得分:2)
Javascript &&
运算符首先计算其左操作数。如果它是一个假值,则它是整个表达式的值。如果它是一个真值,则评估右操作数,并返回它。
零,空字符串,未定义和假都是假值。您的sampleObject.size值为10,一个truthy值,因此评估右操作数并将其用作整个表达式的值。
请注意,这些都不取决于作为对象的值。
答案 1 :(得分:2)
||
和&&
运算符从左到右运行。在||
的情况下,返回第一个truthy值。对于&&
,这是第一个假值。在这两种情况下,如果找不到合适的返回值,则返回最后一个。
因此,在这种情况下,它为表达式返回了一个真值,这意味着sampleObject.size
和sampleObject.show.model
都是真值。