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

Выражение функции, заканчивающееся на; против

При чтении других кодов я видел функции, написанные как заканчивающиеся точкой с запятой, так и не заканчивающиеся точкой с запятой.

с:

var testFunction = function() {
  // magic happens here
};

без

var testFunction = function() {
  // magic happens here
}
  • : Является ли еще один "технически" правильным, чем другой?
  • : Есть ли преимущество в скорости для одного?
  • ?: Неужели браузеры не заботятся, и это просто стиль, истекающий кровью с другого языка или старый формат, который раньше требовался для функций JavaScript?
  • ?: # {вопрос, который я не рассматривал, чтобы спросить здесь, но вы думаете, что я должен был бы

Обновление: я также нашел это очень полезным = > https://developer.mozilla.org/en/JavaScript/Reference/Functions_and_function_scope

4b9b3361

Ответ 2

Существует два способа определения функций:

var testFunction = function() {
  // magic happens here
};

и

function testFunction(){
  // magic happens here
}

Я считаю, что лучше завершить с ;, когда вы определяете его с помощью инструкции (первый вариант), но не как определение функции (вторая опция).

JS Parsers довольно гибкие, поэтому YMMV.

Ответ 3

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

// As you do this
var i = 0;

// Also do this
var obj = function() {
  // aforementioned magic
};

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

var obj = function() {
  magic1 : function() {},
  magic2 : function() {}, // <-- Similarly, comma is optional here...sorta
                          //     See Marcel comment below.
};

Конечно, для простейших описаний функций его можно считать "более технически правильным", чтобы его не было, поскольку он не является линейно выполненным выражением. (См. Отличный контрапункт в руководстве по стилю Google и т.д.). В этом случае точка с запятой ; интерпретируется как "пустая" строка кода, а не токен завершения выражения.

С простыми декларациями функций оставьте это:

function doMagic() {
  // aforementioned magic
}

Ответ 4

Является ли еще один "технически" правильным, чем другой?

Нет. Технически вы назначаете значение переменной, которая является функцией, точно так же, как var x = 10. Вы можете объявить это с помощью ; или без него, и это одинаково верно в любом случае.

Есть ли преимущество в скорости для одного?

Я был бы очень удивлен, если бы была заметная разница.

У браузеров все равно, и это просто стиль, кровоточащий с другого языка или старый формат, который раньше требовался для функций JavaScript?

Браузеры не заботятся, это просто причуда языка.

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

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

Но, как и в любом аргументе стиля кода, он быстро становится вопросом личного выбора, и там появляются огни. Соблюдайте осторожность.