先解釋一下什么是“自由變量”。 在A作用域中使用的變量x,卻沒有在A作用域中聲明(即在其他作用域中聲明的),對於A作用域來說,x就是一個自由變量。如下圖 如上程序中,在調用fn()函數時,函數體中第6行。取b的值就直接可以在fn作用域中取,因為b就是在這里定義的。而取x的值時,就需要到另一 ...
前言 在第 章關於變量對象的描述中,我們已經知道一個執行上下文 的數據 變量 函數聲明和函數的形參 作為屬性存儲在變量對象中。 同時我們也知道變量對象在每次進入上下文時創建,並填入初始值,值的更新出現在代碼執行階段。 這一章專門討論與執行上下文直接相關的更多細節,這次我們將提及一個議題 作用域鏈。 定義 如果要簡要的描述並展示其重點,那么作用域鏈大多數與內部函數相關。 我們知道,ECMAScrip ...
2012-01-18 09:35 36 52247 推薦指數:
先解釋一下什么是“自由變量”。 在A作用域中使用的變量x,卻沒有在A作用域中聲明(即在其他作用域中聲明的),對於A作用域來說,x就是一個自由變量。如下圖 如上程序中,在調用fn()函數時,函數體中第6行。取b的值就直接可以在fn作用域中取,因為b就是在這里定義的。而取x的值時,就需要到另一 ...
前言 JavaScript 中有一個被稱為作用域(Scope)的特性。雖然對於許多新手開發者來說,作用域的概念並不是很容易理解,本文我會盡我所能用最簡單的方式來解釋作用域和作用域鏈,希望大家有所收獲! 作用域(Scope) 1. 什么是作用域 作用域是在運行時代碼中的某些特定部分中變量 ...
來做一個深入的理解。 1. 全局作用域(Global Scope) 全部變量擁有全局作用 ...
前面的話 盡管函數作用域是最常見的作用域單元,也是現行大多數javascript最普遍的設計方法,但其他類型的作用域單元也是存在的,並且通過使用其他類型的作用域單元甚至可以實現維護起來更加優秀、簡潔的代碼,比如塊作用域。隨着ES6的推廣,塊作用域也將用得越來越廣泛。本文是深入理解 ...
的認識。本文是深入理解javascript作用域系列第二篇——詞法作用域和動態作用域 詞法作用 ...
這次說一下對象具體的一個實例:函數,以及其對應的作用域與作用域鏈。簡單的東西大家查下API就行了,這里我更多的是分享自己的理解與技巧。對於作用域和作用域鏈,相信絕大多數朋友看了我的分享都能基本理解,少數人看完之后再努力思考思考,基本也就懂了。最后說一下,不合理的地方,歡迎批評指正。 函數調用 ...
前面的話 對於執行環境(execution context)和作用域(scope)並不容易區分,甚至很多人認為它們就是一回事,只是高程和犀牛書關於作用域的兩種不同翻譯而已。但實際上,它們並不相同,卻相互糾纏在一起。本文先用一張圖開宗明義,然后進行術語的簡單解釋,最后根據圖示內容進行詳細 ...
前面的話 一般認為,javascript代碼在執行時是由上到下一行一行執行的。但實際上這並不完全正確,主要是因為聲明提升的存在。本文是深入理解javascript作用域系列第三篇——聲明提升(hoisting) 變量聲明提升 直覺上,會認為是undefined ...