[英]Global variables vs. passing a value into a function?
我是JavaScript的新手,並且有一個關於訪問函數中變量的最佳實踐的簡單(我推測)問題:
什么時候應該聲明一個全局變量,而不是簡單地將值傳遞給函數?
聲明全局變量應僅用作最后的選項。
全局變量一般都很糟糕,特別是在javascript中。 根本沒有辦法阻止另一段javascript破壞你的全局。 clobbering將無聲地發生並導致運行時錯誤。
以下面的例子為例。
// Your code
myParam = { prop: 42 };
function operateOnMyParam() {
console.log(myParam.prop);
}
在這里,我宣布了2個全局變量
這可能在單獨測試您的javascript時工作正常。 但是,如果在測試用戶之后將您的javascript庫與我的javascript庫(恰好具有以下定義)相結合,會發生什么
// My code
function myParam() {
console.log("...");
}
這也定義了一個名為myParam的全局值,它與myParam沖突。 哪一個獲勝取決於腳本的導入順序。 但無論哪種方式,我們中的一個人都遇到麻煩,因為我們的一個全球物體已經死了
有許多原因......但是一個簡單的原因是..函數的參數只存在於函數中,而它正在運行。 全局變量始終存在,這意味着:
簡而言之:因為函數參數只存在很短的時間並且不存在於函數之外,所以更容易理解正在發生的事情,並且大大降低了錯誤的風險。
在處理無框架JavaScript時,我會將我的簡單變量和函數存儲在對象文字中,以免混淆全局命名空間。
var myObject = {
variableA : "Foo",
variableB : "Bar",
functionA : function(){
//do something
//access local variables
this.variableA
}
}
//call functions and variables
myObject.variableA;
myObject.functionA();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.