2015-01-14 46 views
-2

,我讀了它通常是最好的,包括一個功能塊中的JavaScript代碼,像這樣JS作用域

(function() { 
    "use strict"; 
    // stuff here 
}()); 

但如果代碼是爲了全局訪問,一個功能或一個常量,例如,是否可以在功能塊之外,或者我應該以另一種方式設置它?

另外 - 如果我將代碼移到功能塊JSLint之外,例如,would suggest我在功能塊內移動use strict語句。我只能做一個讓步,我不得不做出什麼?

+0

爲什麼downvote沒有評論?這對誰有幫助? – Chris

+1

看起來好像你使用的模式沒有真正理解*爲什麼*:貨物崇拜的好例子。你應該深入挖掘並找到全球功能/變量的替代方案。 (這與downvoting無關。) – JJJ

+0

@ t.niese這很好,謝謝。 Juhana我知道我爲什麼使用它,但我沒有如何適當地調整我的代碼,同時擁有全局函數。我認爲SO的意義在於你可以提出你不知道答案的問題? – Chris

回答

0

在函數內部設置好處有好處,這意味着未公開的私有變量仍然是私有的。您可以通過該功能的事物向外界展示事物。

var module = (function() { 
    "use strict"; 
    var private = "This is private!"; 
    var publicFn = function() { return "This is public!"; }; 

    return { 
     myFunction: publicFn; 
    }; 
})(); 

module.myFunction(); // This is public 

至於使用"use strict"只有內部功能,這是因爲作者通常串聯,然後再縮小多個JavaScript文件,並使用"use strict"功能範圍之外,會影響鏈中的所有其他文件(這有時不是預期的行爲,可能會導致錯誤)。