Разделитель операторов JS с запятыми
Я нашел следующий пример js и смущен синтаксисом. Обратите внимание, что выражения разделяются запятой, а не точкой с запятой. Являются ли запятые допустимым разделителем операторов в js? Я этого раньше не видел.
$('selector').each(function () {
this.onclick = function () {
this.select();
},
this.onblur = function () {
},
this.onfocus = function () {
},
this.onkeyup = function () {
}
});
Ответы
Ответ 1
Запятые действуют как разделитель между выражениями в одном выражении выражения. Таким образом, (если он был завершен, а не отключен после функции "onkeyup" ), это всего лишь одно выражение.
На самом деле нет причин для такого кода, или, по крайней мере, не очень хорошая причина. В этом конкретном случае он имеет практически тот же эффект, что и ряд отдельных выражений выражения, разделенных точками с запятой.
Запятый "оператор" во многих случаях сомнительный, но иногда полезный:
var index, len;
for (index = 0, len = list.length; index < len; ++index) { ... }
например. Это позволяет отбросить несколько выражений (обычно назначений) в грамматическую локаль, которая допускает только одно выражение. Это, по-моему, признак синтаксической слабости.
Ответ 2
Каждое присваивание на самом деле является выражением (а не выражением); и выражения могут быть объединены в большее выражение, конечным значением которого является просто значение последнего подвыражения; например.
alert( (w=1+1, x=2+3, y=3+3, z=4+4) ); // shows 8
Хотя код, который вы показали, действителен, я не думаю, что это хороший образец. Я бы сменил его на точки с запятой.