1

我有一个简单的 if 条件,像这样,

if (gl.Node.moveUp.call(this) && this.parent._currentScene()) {
    // Do something
}

两个函数都返回一个布尔值,条件是否按顺序评估?

gl.Node.moveUp更改调用它的对象中的某些内容,即使_currentScene返回 false,我仍然希望发生这种情况。

所以在伪代码中,如果条件输出类似于

if (true && false) {

}

调用是否gl.Node.moveUp仍会被执行并更改调用对象,或者因为整体条件评估为假,javascript 是否会回滚?

如果像下面这样的条件,将它包装成两个会更好吗?

if (gl.Node.moveUp.call(this)) {

     if (this.parent._currentScene()) {

     }
}
4

2 回答 2

1

如果第一个函数返回 false,则将调用第二个函数,否则它会跳出 else 块。即使第二个参数是false第一个函数,无论如何都会执行。

于 2013-06-09T19:58:41.033 回答
1

仅当第一个操作数尚未确定结果时,才会评估||or的第二个操作数。&&请参阅http://www.ecma-international.org/ecma-262/5.1/#sec-11.11

于 2013-06-09T19:59:38.113 回答