1

我正在阅读Mozilla 开发人员网络关于 Javascript 的页面,并且对我看到的一行感到困惑。这是有问题的描述和行:

&& 和 || 运算符使用短路逻辑,这意味着他们是否会执行第二个操作数取决于第一个操作数。这对于在访问它们的属性之前检查空对象很有用:

var name = o && o.getName();

我在这里的困惑是,片段的目的大概是执行:

var name;
if (o){
     name = o.getname();
}  

但是,看起来这里发生的事情是 name 被分配了一个布尔值,并且该布尔值是“o 存在且其名称不为空”。换句话说,对我来说它看起来像:

var name = false;
if (o && o.getname()){
    name = true;
}

谢谢!

4

1 回答 1

2

此答案是Felix Kling的评论,我希望他将其作为自己的答案发布,以获得奖励的声誉


看看最上面的逻辑运算符

“逻辑运算符通常与布尔(逻辑)值一起使用;当它们使用时,它们返回一个布尔值。但是,&& 和 || 运算符实际上返回指定操作数之一的值,所以如果这些运算符与非- 布尔值,它们可能返回非布尔值。”

于 2014-04-28T15:50:34.737 回答