我见过不同的开发人员在 javascript 中的函数后包含分号,有些则没有。哪个是最佳实践?
function weLikeSemiColons(arg) {
// bunch of code
};
或者
function unnecessary(arg) {
// bunch of code
}
我见过不同的开发人员在 javascript 中的函数后包含分号,有些则没有。哪个是最佳实践?
function weLikeSemiColons(arg) {
// bunch of code
};
或者
function unnecessary(arg) {
// bunch of code
}
分号后函数的声明是没有必要的。
a 的语法FunctionDeclaration
在规范中描述为:
function Identifier ( FormalParameterListopt ) { FunctionBody }
语法上不需要分号,但可能想知道为什么?
分号用于将语句彼此分开,而 aFunctionDeclaration
不是语句。
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是事实上的约定,它表示函数体后没有分号。请参阅“分号”部分。
只要保持一致!它们不是必需的,但我个人使用它们,因为大多数缩小技术都依赖于分号(例如,Packer)。
真的只是取决于你的喜好。我喜欢用分号结束代码行,因为我习惯了 Java、C++、C# 等,所以我在 javascript 中使用相同的编码标准。
不过,我通常不会以分号结束函数声明,但这只是我的偏好。
浏览器会以任何一种方式运行它,但也许有一天他们会提出一些更严格的标准来管理这个。
我会写的代码示例:
function handleClickEvent(e)
{
// comment
var something = true; // line of code
if (something) // code block
{
doSomething(); // function call
}
}