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

Разделитель операторов JS с запятыми

Я нашел следующий пример js и смущен синтаксисом. Обратите внимание, что выражения разделяются запятой, а не точкой с запятой. Являются ли запятые допустимым разделителем операторов в js? Я этого раньше не видел.

    $('selector').each(function () {

            this.onclick = function () {
                this.select();
            },

            this.onblur = function () {
            },

            this.onfocus = function () {
            },

            this.onkeyup = function () {
            }
    });
4b9b3361

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

Хотя код, который вы показали, действителен, я не думаю, что это хороший образец. Я бы сменил его на точки с запятой.