Відповіді:
Точка з комою після оголошення функції є не обов'язково .
Граматика а FunctionDeclaration
описується в специфікації так:
function Identifier ( FormalParameterListopt ) { FunctionBody }
Граматично не потрібна крапка з комою, але може задатися питанням, чому?
Точки з комою служать для відокремлення тверджень один від одного, а а FunctionDeclaration
- не твердження .
FunctionDeclarations
оцінюються до вступу коду у виконання, підйом - це загальне слово, яке використовується для пояснення такої поведінки.
Терміни "функція декларації" та "оператор" часто помилково використовуються взаємозамінно, тому що не існує оператора функції, описаного в специфікації ECMAScript, однак є деякі реалізації, які включають в свою граматику оператор функції, зокрема Mozilla-, але знову ж таки це є нестандартним.
Однак крапки з комою завжди рекомендуються там, де ви використовуєте FunctionExpressions
, наприклад:
var myFn = function () {
//...
};
(function () {
//...
})();
Якщо пропустити крапку з комою після першої функції у наведеному вище прикладі, ви отримаєте абсолютно небажані результати:
var myFn = function () {
alert("Surprise!");
} // <-- No semicolon!
(function () {
//...
})();
Перша функція буде виконана негайно, оскільки дужки, що оточують другу, будуть інтерпретуватися як Arguments
виклик функції.
Рекомендовані лекції:
FunctionDeclaration
vs FunctionExpression
)Я використовую їх після оголошення функції змінної:
var f = function() { ... };
але не після визначень класичного стилю:
function f() {
...
}
JS Lint - це фактична умова, і вона не говорить про крапку з комою після функції функції. Дивіться розділ «Точка з комою» .
Просто залишайтеся послідовними! Вони не потрібні, але я особисто їх використовую, тому що більшість методів мінімізації покладаються на напівколонку (наприклад, Пакер ).
Дійсно просто залежить від ваших уподобань. Мені подобається закінчувати рядки коду напівколонами, тому що я звик до Java, C ++, C # тощо, тому я використовую ті самі стандарти для кодування в JavaScript.
Я, як правило, не закінчую декларації функцій у напівколонках, але це лише моя перевага.
Веб-браузери запускають його в будь-якому випадку, але, можливо, одного дня вони придумають більш жорсткі стандарти, що керують цим.
Я б написав приклад коду:
function handleClickEvent(e)
{
// comment
var something = true; // line of code
if (something) // code block
{
doSomething(); // function call
}
}
Це насправді більше, ніж питання конвенції чи послідовності.
Я впевнений, що ні поставивши крапку з комою після кожного оператора Уповільнює внутрішнього синтаксичного аналізу , оскільки він повинен з'ясувати , де кінець затвердження. Мені б хотілося, щоб у вас були зручні номери, щоб ви це позитивно підтвердили, але, можливо, ви можете самі погуглювати це. :)
Крім того, коли ви стискаєте чи мінімізуєте код, відсутність напівколонок може призвести до мінімізованої версії вашого сценарію, яка не робить те, що ви хотіли, тому що все біле місце проходить.
Коли я сформулював сценарії, я зрозумів, що мені потрібно використовувати крапку з комою для функцій, які починаються з позначки рівності. якщо ви визначаєте функцію як var, так, вам потрібно використовувати крапку з комою.
потрібна крапка з комою
var x = function(){};
var x = new function(){};
this.x = function(){};
не потрібно крапки з комою
function x(){}
ПРОСТО:
Доброю практикою залишати крапки з комою ;
після закінчення функціональних дужок. Вони роками вважалися найкращою практикою.
Одна з переваг завжди використовувати їх - це якщо ви хочете мінімізувати свій JavaScript.
Як мінімізація Javascript, допомагає трохи зменшити розмір файлу.
Але що стосується найкращої практики та відповіді вище, не рекомендується використовувати її після тегу функцій.
Якщо ви НЕ використовуєте крапки з комою, і якщо ви хочете мінімізувати (як це роблять багато розробників, якщо їх сайт використовує багато JavaScript), ви можете отримати всілякі помилки / попередження.
крапка з комою після функції не потрібна, використовуючи її чи ні, не спричиняє помилок у вашій програмі. однак, якщо ви плануєте мінімізувати свій код, то використання крапки з комою після функцій є хорошою ідеєю. скажімо, наприклад, у вас є такий код, як наведений нижче
//file one
var one=1;
var two=2;
function tryOne(){}
function trytwo(){}
і
//file two
var one=1;
var two=2;
function tryOne(){};
function trytwo(){};
коли ви зведете обидва, ви отримаєте наступне як вихід
//file one
var one=1;var two=2;function tryOne(){}
function trytwo(){}
і
//file two
var one=1;var two=2;function tryOne(){};function trytwo(){};