2

コンマ演算子は、コンマで区切られた各オペランドを評価します (最後のオペランドの値を返します)。

(i = 1 + 2), (j = 3 + 4);

機能的に同等です

i = 1 + 2;
j = 3 + 4;

また、私の知る限り、var などのステートメントは演算子ではなく、オペランドの一部と見なされます。( https://developer.mozilla.org/en/JavaScript/Reference/Operators/Operator_Precedenceを参照)

したがって、各オペランドが個別に評価されている場合、なぜ

function foobar () {
    var i = 3, j = 7, z;
}

i、j、z の 3 つの変数を foobar のスコープに作成しますか?

それが実際に起こっていることは知っていますが、なぜこれが実際に起こるのか、しばらく疑問に思っていました. i は foobar のスコープにあるように見えますが、j と z は最終的にグローバル スコープにあるはずです。

4

1 に答える 1

4

ステートメントで使用されるコンマvarは、実際にはコンマ演算子ではありません。

同様に、関数呼び出しで引数を区切るために使用するコンマも、コンマ演算子ではありません。

于 2012-05-20T05:08:17.630 に答える