當前位置:
首頁 > 最新 > 關於Javascript作用域的一些介紹

關於Javascript作用域的一些介紹

在JavaScript中,作用域指的是你代碼的當前上下文環境.作用域可以被全局或者局部地定義.理解JavaScript的作用域是讓你寫出穩健的代碼並且成為一個更好的開發者的關鍵.

你將會理解那些變數或者函數是可以訪問的,並且有能力去改變你代碼的作用域進而有能力去寫出運行速度更快,更容易維護,當然調試也非常容易的代碼.

作用域對於程序員來說就像氧氣。它無處不在,甚至,你往往不會去想他。但當它被污染時(例如使用全局對象),你會感覺到窒息(例如應用響應變慢)。javascript核心作用域規則很簡單,被精心設計,且很強大。有效地使用javascript需要掌握變數作用域的一些基本概念,並了解一些可能導致難以捉摸的、令人討厭的問題的極端情況。

javascript很容易在全局命名空間中創建變數。創建全局變數毫不費力,因為它不需要任何形式的聲明,而且能被整個程序的所有代碼自動地訪問。

對於初學者,遇到某些需求(例如,傳輸的數據被記錄下來、等待某時機某函數調用時使用;或者是某函數被經常使用)時,好不猶豫想到全局函數,甚至大一學到的C語言面向過程思想太根深蒂固,系統整整齊齊地都是滿滿函數。定義全局變數會污染共享的公共命名空間,並可能導致意外的命名衝突。全局變數也不利於模塊化,因為它會導致程序中獨立組件間的不必要耦合。嚴重地說,過多的全局(包括樣式表,直接定義div或者a的樣式),整合到多人開發過稱將會成為災難性錯誤。這就是為什麼jQuery的所有代碼都被包裹在一個立即執行的匿名表達式——自調用匿名函數。當瀏覽器載入完jQuery文件後,自調用匿名函數立即開始執行,初始化jQuery的各個模塊,避免破壞和污染全局變數以至於影響到其他代碼。

javascript的全局命名空間也被暴露在程序全局作用域中可以訪問的全局對象,該對象作為this關鍵字的初始值。在web瀏覽器中,全局對象被綁定在全局window變數。這就意味你創建全局變數有兩種方法:在全局作用域內使用var聲明他,或者將其加入到全局對象中。使用var聲明的好處是能清晰地表達全局變數在程序範圍中的影響。

鑒於引用為綁定的全局變數會導致運行時錯誤,因此,保存作用域清晰和簡潔會使代碼的使用者更容易理解程序聲明了那些全局變數。

由於全局對象提供了全局環境的動態反應機制,所以可以使用它查詢一個運行環境,檢測在這個平台下哪些特性可用。

如果你提供了JSON的實現,你當然可以簡單無條件地使用自己的實現。但是由宿主環境提供的內置實現幾乎更適合的,因為它們是用C語言寫進瀏覽器的。因為它們按照一定的標準對正確性和一致性進行了嚴格檢查,並且普遍來說比第三方實現提供更好的性能。

當初數據結構課程設計模擬串的基本操作,要求不能使用語言本身提供的方法。javascript對數組的基本操作實現得很好,如果只是出於一般的學習需要,模擬語言本身提供的方法的想法很好,但是如果真正投入開發,無需考慮第一時間選擇使用javascript內置方法。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 求道猿 的精彩文章:

Java名聲大噪,你真正了解它嗎?
創業乾貨,歡迎朋友們來啃

TAG:求道猿 |

您可能感興趣

Python 作用域和 LEGB
C++對象的使用:四種對象生存期和作用域、static 用法總結
Go 語言變數作用域
想成為JS大牛,作用域是你必須知道的
ES6之塊級作用域
變數與塊級作用域
每天學點電腦知識趣味編程系列之變數作用域