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

Использование запятых по сравнению с точкой с запятой в JavaScript?

Учитывая следующий код

var fn = function () {
    var x = 'x',
    y = 'y';
    this.a = 'a',
    this.b = 'b',
    this.c = 'c';
    this.d = 'd',
    this.e = 'e';   
}

Вы можете видеть, что есть смесь обоих.
Какая польза от использования того или другого?

Я понимаю, что точка с запятой заканчивается. И запятая должна использоваться для объединения нескольких объявлений.

Так можно ли сказать, что с этим примером тогда должны быть только две точки с запятой?

var fn = function () {
    var x = 'x',
    y = 'y';
    this.a = 'a',
    this.b = 'b',
    this.c = 'c',
    this.d = 'd',
    this.e = 'e';   
}
4b9b3361

Ответ 1

Оператор запятой является оператором, который может использоваться внутри выражения. Он используется для выделения нескольких разных выражений и имеет значение "оценить все следующие выражения, а затем произвести значение окончательного выражения". Например:

a = 1, b = 2, c = 3

означает "оцените a = 1, затем b = 2, затем c = 3, затем оцените значение выражения c = 3.

Точка с запятой не является оператором и не может использоваться внутри выражения. Он используется как часть синтаксиса JavaScript для обозначения конца выражения, которое рассматривается как оператор. Например, вы могли бы сказать

a = 1; b = 2; c = 3;

И это будет означать "в последовательности есть три оператора: оценивать первое выражение как первый оператор, второе выражение как второе утверждение, а третье выражение - как третий оператор".

В этом отношении эти два не являются полностью взаимозаменяемыми. Например, вы не можете писать

var a = 1, var b = 2;

Потому что var a = 1 и var b = 2 являются операторами, а не выражениями и, следовательно, не могут быть разделены запятыми. Здесь вы должны использовать точку с запятой.

(Примечание: вы могли бы сказать

var a = 1, b = 2;

потому что язык специально разрешает это использование запятой как часть синтаксиса оператора объявления. Здесь запятая не используется как оператор.)

Аналогично, вы не можете сказать

a = (b = 1; c = 2);

Потому что здесь правая часть выражения должна быть выражением, а не выражением, а ; используется для разделения операторов. Вместо этого внутренняя точка с запятой должна быть запятой. (Опять же, этот код довольно неудобен и необычен в первую очередь, поэтому вы, вероятно, не должны этого делать!)

С стилистической точки зрения, оператор запятой редко используется и недостаточно скрыт, чтобы он мог развернуть достаточно компетентные кодовые кодировки JavaScript. В результате я бы настоятельно рекомендовал не использовать его и вместо этого следовать установленным соглашениям в JavaScript об использовании точек с запятой для завершения операторов, даже если это было бы эквивалентно и синтаксически законно использовать запятые для выделения выражений, которые каждый из них используется в качестве операторов.

Надеюсь, это поможет!

Ответ 2

Нет, запятая имеет три значения.

  • С объявлением переменной, он просто позволяет вам опустить var перед каждой переменной.
  • С выражениями: "Оператор запятой оценивает оба своих операнда (слева направо) и возвращает значение второго операнда."
  • Разделяйте аргументы в объявлениях функций и вызовах функций, но это должно быть очевидно для каждого программиста.

Пример для двух:

alert((2,3)); //3

Обратите внимание, что запятая в выражении var не является оператором запятой, потому что она не существует в выражении. Скорее, это особый символ в операторах var для объединения нескольких из них в один. Практически эта запятая ведет себя почти так же, как и оператор запятой.

MDN

Когда полезен оператор запятой?

Ответ 3

Это действительно неважно. Насколько мне известно, нет никакой выгоды от использования запятых.

Просто используйте то, что вы предпочитаете:)

Вот что JavaScript - Хорошие части должен сказать:

Оператор запятой может привести к чрезмерно сложным выражениям. Оно может также маскировать некоторые ошибки программирования.

JSLint ожидает увидеть запятую, используемую как разделитель, но не как оператора (за исключением частей инициализации и инкрементации для утверждения). Он не ожидает, что в массиве литералы. Дополнительные запятые не должны использоваться. Не должно появляться запятая после последнего элемента литерала массива или объектного литерала, потому что это может быть неверно истолковано некоторыми браузерами.

Ответ 4

Лучше всегда оставаться в согласии с конвенцией. Это либо все полуколоны, либо все запятые, и я уверен, что вы предпочли бы использовать полуколоны, а не запятые везде.

Также нет увеличения скорости, поэтому вам не о чем беспокоиться.