我见过不同的开发者在javascript的函数后面加分号,也有一些没有。哪种是最佳实践?
function weLikeSemiColons(arg) { // bunch of code };
或
function unnecessary(arg) { // bunch of code }
只要保持一致!它们不是必需的,但我个人使用它们,因为大多数缩小技术依赖于分号(例如,封隔器)。
这取决于你的喜好。我喜欢用分号来结束代码行,因为我习惯了Java、c++、c#等,所以我在javascript中使用相同的编码标准。
我通常不以分号结束函数声明,但这只是我的偏好。
浏览器会以任何一种方式运行它,但也许有一天他们会提出一些更严格的标准来管理它。
我要写的代码示例:
function handleClickEvent(e) { // comment var something = true; // line of code if (something) // code block { doSomething(); // function call } }
JS线头是事实上的惯例,它表示在函数体之后没有分号。参见“分号”部分。
函数声明后面的分号是没有必要。
FunctionDeclaration的语法在该规范中是这样描述的:
FunctionDeclaration
function Identifier ( FormalParameterListopt ) { FunctionBody }
语法上不需要分号,但你可能想知道为什么?
分号用于将语句彼此分开,并且FunctionDeclaration不是声明。
FunctionDeclarations被求值之前代码进入执行,起重是一个用来解释这种行为的常见的单词。
FunctionDeclarations
术语“功能声明”;而“function statement”;它们经常被错误地互换使用,因为ECMAScript规范中没有描述函数语句,但是有一些实现在它们的语法中包含了函数语句,尤其是Mozilla,但这也是不标准的。
但是,在使用FunctionExpressions的地方总是建议使用分号。例如:
FunctionExpressions
var myFn = function () { //... }; (function () { //... })();
如果你在上面的例子中省略了第一个函数后的分号,你将得到完全不希望看到的结果:
var myFn = function () { alert("Surprise!"); } // <-- No semicolon! (function () { //... })();
第一个函数将立即执行,因为围绕第二个函数的括号将被解释为函数调用的Arguments。
Arguments
推荐讲座:
FunctionExpression
我在函数作为变量声明之后使用它们:
var f = function() { ... };
但不是在经典风格的定义之后:
function f() { ... }
实际上,这不仅仅是惯例或一致性的问题。
我相当确定不在每条语句后放置分号会降低内部解析器的速度,因为它必须找出语句的结尾在哪里。我希望我有一些方便的数字给你肯定地证实这一点,但也许你可以自己谷歌。:)
此外,当您压缩或缩小代码时,缺少分号可能导致脚本的缩小版本不能执行您想要的操作,因为所有的空白都消失了。
当我缩小我的脚本时,我意识到我需要对以等号开始的函数使用分号。如果你定义一个函数为var,是的,你需要使用分号。
需要分号
var x = function(){}; var x = new function(){}; this.x = function(){};
不需要分号
function x(){}
<强>编辑: 这与ECMAScript 2021 (ES2021)无关,所以请忽略下面的语句
将分号;放在函数花括号的末尾是一个很好的做法。它们被认为是最佳实践。
;
总是使用它们的一个好处是如果你想要最小化你的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(){};