我见过不同的开发人员在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
}
function declarations后面的分号是not necessary.
FunctionDeclaration
的语法在the specification中描述如下:
function Identifier ( FormalParameterListopt ) { FunctionBody }
语法上不需要分号,但可能想知道为什么?
分号用来分隔statements,FunctionDeclaration
不是statement.
FunctionDeclarations
被判断before代码进入执行,hoisting是用来解释这种行为的common word.
术语"function declaration"和"function statement"经常被错误地互换使用,因为ECMAScript规范中没有描述function语句,但是有些实现在语法中包含function语句,特别是Mozilla,但这也是非标准的.
然而,在使用FunctionExpressions
的地方总是建议使用分号.例如:
var myFn = function () {
//...
};
(function () {
//...
})();
如果在上述示例中省略第一个函数后的分号,则会得到完全不想要的结果:
var myFn = function () {
alert("Surprise!");
} // <-- No semicolon!
(function () {
//...
})();
第一个函数将立即执行,因为第二个函数周围的括号将被解释为函数调用的Arguments
.
推荐讲座:
FunctionDeclaration
比FunctionExpression
更多)