Использование запятых и точек с запятой в 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';
}
4 ответов
оператор запятая-это оператор, который может использоваться внутри выражения. Он используется для разделения нескольких различных выражений и имеет значение " оценить все следующие выражения, а затем произвести значение конечного выражения."Например:
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 об использовании точек с запятой для завершения операторов, даже если было бы эквивалентно и синтаксически законно использовать запятые для разделения выражений, которые используются в качестве операторов.
надеюсь, что это помогает!
нет, запятая имеет три значения.
- С переменной declartions, это просто опустить
var
перед каждой переменной. - С выражениями, "оператор" запятая " вычисляет оба операнда (слева направо) и возвращает значение второго операнда."
- отдельные аргументы в объявлениях функций и вызовах функций, но это должно быть очевидно для каждого программиста.
пример два;
alert((2,3)); //3
обратите внимание, что запятая в операторе var не является оператором запятой, поскольку она не существует в выражении. Скорее, это специальный символ в операторах var, чтобы объединить несколько из них в один. Практически эта запятая ведет себя почти так же, как оператор запятой.
Это действительно не имеет значения. Насколько мне известно, использование запятых не дает преимущества в скорости.
просто используйте то, что вы предпочитаете:)
Это JavaScript-Хорошие Части говорит:
оператор запятой может привести к чрезмерно сложным выражениям. Оно может также маскируйте некоторые ошибки программирования.
JSLint ожидает увидеть запятую, используемую как разделитель, но не как оператор (за исключением части инициализации и инкрементирования для заявлений.) Он не ожидает увидеть elided элементы в массиве константы. Не следует использовать дополнительные запятые. Запятая не должна появляться после последнего элемента литерала массива или литерала объекта, потому что это может быть неправильно истолковано некоторыми браузерами.
лучше, чтобы всегда оставаться в соответствии с Конвенцией. Это либо все полуколоны, либо все запятые, и я уверен, что вы предпочитаете использовать полуколоны, а не запятые везде.
также нет увеличения скорости, поэтому беспокоиться не о чем.