[英]Defining JavaScript functions
在我的項目中(僅限瀏覽器上下文)我想使用JS代碼質量工具。 我已經嘗試了jslint
和eslint
。 我希望linter幫助我使我的代碼干凈,清晰,錯誤並提高其整體質量。 我不想做的是我不想寫一些骯臟的黑客或使用不好的做法只是為了讓傻瓜高興。
我只關心一個問題。 他們都報告了一個問題,我在定義之前使用了一個函數。 在下面的代碼片段顯然bar
不會它的定義之前調用。
function foo() {
bar();
}
function bar() {
}
foo();
在這個最簡單的場景中,我可以在foo
之前移動bar
。 但有些情況下,這是不可能的。 第一個功能使用第二個,第二個使用第三個,第三個使用第一個。
看起來我可以通過在他們的定義之前聲明所有函數來使這些變得快樂。
var foo;
var bar;
foo = function() {
bar();
};
bar = function() {
};
foo();
問題是:
yes
我應該堅持這種做法,不是嗎? no
關於這個問題的良好做法? 不,這些片段沒有被破壞,但也沒有最佳實踐。
var foo = function(){
}
var bar = function(){
foo();
}
bar();
實際上會成為:
var foo, bar;
foo = function(){
}
bar = function(){
foo();
}
bar();
因此,您應該在范圍的開頭定義所有變量和函數。 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/
始終使用嚴格模式。 "use strict"
你有沒有像IIFE那樣在沒有全局變量的范圍內運作
function foo() {
bar();
};
function bar() {
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.