Почему такое выражение не выдаёт ошибку:
i=5,console.log(i)
а такое выражение выдаёт ошибку ?
var i=5,console.log(i)
такой синтаксис кода обычно в jquery-плагинах.
Как правильно составлять такие выражения через запятую?
к примеру чтобы можно ещё было добавить к вышеприведённому выражению функцию-обработчик
i=5, console.log(i),function test(){var test='test';alert(test);};
test();
это выражение выдаёт ошибку
Ответ
В вашем примере есть два разных выражения, это оператор var и оператор (запятая). Поэтому рассматривать их надо отдельно друг от друга.
Оператор var позволяет определять переменные, при этом синтаксис позволяет определить сразу несколько, перечислив их через запятую. При этом значение может быть вычислено из сложных выражений.
var имя1 = значение1, имя2 = значение2, имя3, имя4, имя5 = значение5 ...
К примеру:
var a = 10,
b = 20,
c = a + b,
d = function test() { return c; },
e = d() * d()
Поэтому если сначала встретили слово var, то дальше запятая имеет отношение именно к нему.
И есть отдельно оператор (запятая). Оператор "запятая" вычисляет оба операнда и возвращает значение второго, как правило он используется, когда хочется включить несколько выражений в то место, где должно быть одно (чаще всего объявление в цикле for).
1, 2 //-> 2
1, 2, 10 + 30 //-> 40
1, function test(){ console.log("test"); } //-> ƒ test(){ console.log("test"); }
Учитывая специфику его работы, то он не привяжет функцию к общему контексту и она не будет доступна по имени test(). Видимо она привязывается к внутреннему контексту выполнения. Но вы можете ее вернуть и использовать.
var test = (1, function test(){ console.log("test"); });
test();
Комментариев нет:
Отправить комментарий