Kol*_*nya 12 javascript jslint eslint
在我的项目中(仅限浏览器上下文)我想使用JS代码质量工具.我都试过jslint
和eslint
.我希望linter帮助我使我的代码干净,清晰,错误并提高其整体质量.我不想做的是我不想写一些肮脏的黑客或使用不好的做法只是为了让傻瓜高兴.
我只关心一个问题.他们都报告了一个问题,我在定义之前使用了一个函数.显然,在下面的代码片段中bar
,在定义之前不会调用它.
function foo() {
bar();
}
function bar() {
}
foo();
Run Code Online (Sandbox Code Playgroud)
在这个最简单的场景中,我可以bar
先行动foo
.但有些情况下,这是不可能的.第一个功能使用第二个,第二个使用第三个,第三个使用第一个.
看起来我可以通过在他们的定义之前声明所有函数来使这些变得快乐.
var foo;
var bar;
foo = function() {
bar();
};
bar = function() {
};
foo();
Run Code Online (Sandbox Code Playgroud)
问题是:
yes
我坚持这种做法,不应该吗?no
这个问题的良好做法是什么?不,这些片段没有损坏,但也不是最佳实践。
var foo = function(){
}
var bar = function(){
foo();
}
bar();
Run Code Online (Sandbox Code Playgroud)
实际上会变成:
var foo, bar;
foo = function(){
}
bar = function(){
foo();
}
bar();
Run Code Online (Sandbox Code Playgroud)
因此,您应该在范围的开头定义所有变量和函数。JavaScript 使用 Hoisting
它有效地将变量和函数的所有声明移动到作用域的顶部。
自己动手被认为是最佳实践并增加了可读性。
Eslint 将检查此处定义和记录的规则vars-on-top
https://www.reddit.com/r/learnjavascript/comments/3cq24a/crockford_says_hoisted_variable_declarations_are/ https://www.sitepoint.com/demystifying-javascript-variable-scope-hoisting/
归档时间: |
|
查看次数: |
138 次 |
最近记录: |