我正在阅读Mozilla Developer Network's page on Javascript,并且被我看到的一条线弄糊涂了。这是相关描述和行:
&&和||运算符使用短路逻辑,这意味着它们是否将执行第二个操作数依赖于第一个操作数。这对于在访问其属性之前检查空对象非常有用:
var name = o && o.getName();
我的困惑在于,大概是片段的目的是执行:
var name;
if (o){
name = o.getname();
}
然而,看起来这里发生的是名称被赋予一个布尔值,并且该布尔值是" o存在且其名称不为空"。换句话说,对我看起来像:
var name = false;
if (o && o.getname()){
name = true;
}
谢谢!
答案 0 :(得分:2)
这个答案是Felix Kling的评论,我希望他会将其作为自己的答案发布,以获得奖励
在最顶层看看Logical Operators:
“逻辑运算符通常与布尔值(逻辑)值一起使用;当它们是,它们返回一个布尔值。但是,&&和||运算符实际上返回一个指定操作数的值,所以如果这些运算符与非布尔值一起使用,它们可能返回非布尔值。“