Подтвердить что ты не робот

Необычный синтаксис javascript

Может кто-нибудь, пожалуйста, объясните мне, что происходит во второй строке здесь?

var foo = function(){alert("hello?")};
(0,foo)();
4b9b3361

Ответ 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

Ответ 3

Так как оператор Comma в javascript оценивает несколько операндов и возвращает последний. MDN:

Оператор запятой оценивает оба своих операнда (слева направо) и возвращает значение второго операнда.

Ваше выражение (0,foo)

возвращает foo, который затем вызывается paranthesis, помещается после него.

Ответ 4

запятая будет оценивать операнды и возвращать последний

вторая строка вернет foo