Необычный синтаксис javascript Может кто-нибудь, пожалуйста, объясните мне, что происходит во второй строке здесь? var foo = function(){alert("hello?")}; (0,foo)(); Ответ 1 Позорное выражение запятой 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 Ответ 3 Так как оператор Comma в javascript оценивает несколько операндов и возвращает последний. MDN: Оператор запятой оценивает оба своих операнда (слева направо) и возвращает значение второго операнда. Ваше выражение (0,foo) возвращает foo, который затем вызывается paranthesis, помещается после него. Ответ 4 запятая будет оценивать операнды и возвращать последний вторая строка вернет foo
Ответ 1 Позорное выражение запятой 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
Ответ 3 Так как оператор Comma в javascript оценивает несколько операндов и возвращает последний. MDN: Оператор запятой оценивает оба своих операнда (слева направо) и возвращает значение второго операнда. Ваше выражение (0,foo) возвращает foo, который затем вызывается paranthesis, помещается после него.