我已经看到不同的开发人员在javascript函数中包含分号,而有些还没有。哪个是最佳做法?
function weLikeSemiColons(arg) { // bunch of code };
要么
function unnecessary(arg) { // bunch of code }
分号后 函数的声明 是 没有必要的 。
a的语法FunctionDeclaration在规范中描述为:
FunctionDeclaration
function Identifier ( FormalParameterListopt ) { FunctionBody }
语法上没有分号,但可能想知道为什么?
分号用于将 语句 彼此分开,并且a FunctionDeclaration不是 语句 。
FunctionDeclarations在代码执行之前进行评估,是用来解释这种行为的 常用词 。
FunctionDeclarations
术语“函数声明”和“函数声明”通常会错误地互换使用,因为ECMAScript规范中没有描述函数声明,但是有一些实现在其语法中包括函数声明,特别是Mozilla,但同样是非标准的。
但是,始终建议在使用的地方使用分号FunctionExpressions,例如:
FunctionExpressions
var myFn = function () { //... }; (function () { //... })();
如果在上面的示例中的第一个函数之后省略分号,则将获得完全不希望的结果:
var myFn = function () { alert("Surprise!"); } // <-- No semicolon! (function () { //... })();
第一个功能将立即执行,因为第二个功能的括号将被解释为Arguments函数调用的。
Arguments