誰かがここの2行目で何が起こっているのか説明してもらえますか?:
var foo = function(){alert("hello?")};
(0,foo)();
悪名高いコンマ式a,b
は両方の引数を評価し、右側の式の値を返します。
したがって、この場合は、とまったく同じfoo();
です。
何が起こっているのかを理解するのに役立つより良い例を次に示します。
function foo() {
print("foo called");
return 123;
}
function bar() {
print("bar called");
return 456;
}
var result = (foo(), bar());
print("result:", result);
出力:
foo called
bar called
result: 456
また、コンマ式は、コンマ区切り関数の引数と混同される場合があります。同じではありません!違いに注意してください。
print("result:", foo(), bar() ); // 3 arguments, no comma operator
print("result:", (foo(), bar()) ); // 2 arguments, comma operator
最初の括弧内の両方の式を評価し、2番目の式(この場合は関数)を実行します。
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Comma_Operator
javascriptのコンマ演算子は複数のオペランドを評価し、最後のオペランドを返すためです。MDN:
コンマ演算子は、両方のオペランド(左から右へ)を評価し、2番目のオペランドの値を返します。
あなたの表現(0,foo)
戻り値はfoo
、その後、paranthesisによって呼び出されます。
カンマはオペランドを評価し、最後のオペランドを返します
2行目はfooを返します