mac*_*ca1 277 javascript syntax
我见过不同的开发人员在javascript函数之后包含分号,而有些则没有.哪个是最佳做法?
function weLikeSemiColons(arg) {
// bunch of code
};
Run Code Online (Sandbox Code Playgroud)
要么
function unnecessary(arg) {
// bunch of code
}
Run Code Online (Sandbox Code Playgroud)
CMS*_*CMS 420
分号后函数的声明是没有必要的.
a的语法FunctionDeclaration
在规范中描述如下:
function Identifier ( FormalParameterListopt ) { FunctionBody }
Run Code Online (Sandbox Code Playgroud)
语法上没有分号,但可能想知道为什么?
分号用于将语句彼此分开,而a FunctionDeclaration
不是声明.
FunctionDeclarations
在代码进入执行之前进行评估,提升是用于解释此行为的常用词.
术语"函数声明"和"函数声明"经常被错误地互换使用,因为ECMAScript规范中没有描述函数声明,但是有些实现在语法中包含函数声明,特别是Mozilla-但是这个是非标准的.
但是,在您使用的地方始终建议使用分号FunctionExpressions
,例如:
var myFn = function () {
//...
};
(function () {
//...
})();
Run Code Online (Sandbox Code Playgroud)
如果在上例中的第一个函数之后省略分号,则会得到完全不希望的结果:
var myFn = function () {
alert("Surprise!");
} // <-- No semicolon!
(function () {
//...
})();
Run Code Online (Sandbox Code Playgroud)
第一个函数将立即执行,因为围绕第二个函数的括号将被解释为Arguments
函数调用.
推荐讲座:
FunctionDeclaration
vs FunctionExpression
)Gab*_*art 38
我在函数变量声明之后使用它们:
var f = function() { ... };
Run Code Online (Sandbox Code Playgroud)
但不是经典风格的定义:
function f() {
...
}
Run Code Online (Sandbox Code Playgroud)
真的只是取决于你的偏好.我喜欢用半冒号结束代码行,因为我已经习惯了Java,C++,C#等,所以我在javascript中使用相同的标准进行编码.
我通常不会在半冒号中结束函数声明,但这只是我的偏好.
浏览器将以任何一种方式运行它,但也许有一天它们会提出一些更严格的标准来管理它.
我写的代码示例:
function handleClickEvent(e)
{
// comment
var something = true; // line of code
if (something) // code block
{
doSomething(); // function call
}
}
Run Code Online (Sandbox Code Playgroud)
这实际上不仅仅是约定或一致性的问题。
我相当确定,不在每个语句后面放置分号会减慢内部解析器的速度,因为它必须找出语句的结尾在哪里。我希望我有一些方便的数字供您肯定地确认这一点,但也许您可以自己用谷歌搜索。:)
此外,当您压缩或缩小代码时,缺少分号可能会导致脚本的缩小版本无法执行您想要的操作,因为所有空白都会消失。
归档时间: |
|
查看次数: |
69547 次 |
最近记录: |