1

私はそのような条件付きの単純な場合、

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

どちらの関数もブール値を返しますが、条件は順番に評価されますか?

gl.Node.moveUp_currentSceneそれを呼び出しているオブジェクト内の何かを変更します。これは、 false が返されたとしても発生したいと考えています。

したがって、条件出力が次のようなものである場合、疑似コードで

if (true && false) {

}

呼び出しがgl.Node.moveUpまだ実行され、呼び出し元のオブジェクトが変更されますか、または全体的な条件が false と評価されるため、javascript はロールバックしますか?

以下のような場合は2つ折りにした方が良いでしょうか?

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

     if (this.parent._currentScene()) {

     }
}
4

2 に答える 2

1

最初の関数が false を返す場合、2 番目の関数が呼び出されます。それ以外の場合は、else ブロックでステップアウトします。2 番目のパラメーターでさえ、false最初の関数はとにかく実行されます。

于 2013-06-09T19:58:41.033 に答える
1

||orの 2 番目のオペランドは&&、最初のオペランドがまだ結果を決定していない場合にのみ評価されます。http://www.ecma-international.org/ecma-262/5.1/#sec-11.11を参照してください。

于 2013-06-09T19:59:38.113 に答える