前言:函式表示式是js中既強大又令人困惑的特性,會涉及到js中很容易讓人迷惑的概念,比如作用域、作用域鏈、this問題、閉包等等,今天我就**下我所理解的作用域。
這裡無非會涉及到區域性變數和全域性變數,我們先來看個**。
外層定義的變數即是全域性的作用域,在任何函式內部都是可以訪問的
var code = '1';
function fn()
fn()
我們把上面的**稍作修改,可以看到在var定義的位置在全域性,那麼一樣的道理,內部函式依然是可以訪問的。
var code ;
function fn()
fn()
在函式內部定於的變數,在函式外部是無法訪問的,即為函式的私有變數,下面的**,在外部不能訪問,會報錯因為code是未曾定義的,只有函式內部是能訪問的。
function fn()
fn()
console.log(code);
下面我們來簡單聊下作用域鏈,這裡涉及到乙個概念,自由變數,我們直接上**,這裡a和b都屬於自由變數,那麼我們看a的鏈式結構其實是最明顯的,這樣所形成的一條鏈式結構,我們稱之為作用域鏈。
var a = 100;
function fn()
}
作用域的理解
什麼是作用域 作用域就是一套規則,控制著變數和函式的可訪問範圍。作用域外無法引用作用域內的變數,離開作用域後,作用域的變數的記憶體空間會被清楚,比如執行完函式。什麼是預解析 就是在瀏覽器解析 之前,把變數的宣告和函式的宣告提公升到該作用域的最上面 什麼是變數提公升 變數提公升就是在進入乙個執行上下文...
作用域理解
例1如下 include int main while test 5 域外 printf n域外 test d t域外 p n test,test return 0 執行結果如下 lnz lnz c test gcc action scope.c lnz lnz c test a.out 域外 te...
我所理解的前端
轉眼間,在鵝廠的實習已經過去三個多月,涉及到實習生轉正留用的考核流程也逐步開始了。帶著一堆疑問,以及自己實習期間的心得體會,與導師暢談了一番。他作為資深前端工程師,就前端領域及我個人未來的職業規劃等方面分享了他自己的經驗。這次與導師的溝通讓我受益匪淺,現簡單總結如下。前端知識學習路線 首先,當然是就...