今天下午去面試,自信滿滿覺得不用準備什么直接上,結果被打臉了。
才發現很久沒面試了自己的語言表達能力下降好多。
感覺很熟悉的作用域、閉包這些問題都不能表達清楚。
可能自己想多了,腦里浮出的都是一個一個的作用域的變量關系,執行環境。
真想叫面試官給我一只筆來畫圖。
但是并沒有這么做,自己可能的確認為完全理解了,但用自己的話又說不出來。真是痛苦。這以前完全沒想到會這樣。
所以,自己打算重新梳理下知識點,多鞏固一下基礎,先放下新的東西,沉淀。
在《js語言精粹》書的作者老道的解釋,作用域控制著 變量與參數的可見性及生命周期。
它的重要作用是減少了命名沖突,并且提供了自動的內存管理。大多數類C語言中,都支持塊級作用域,js卻不支持塊級作用域。但,js 確實有函數的作用域,意味著在函數中定義的參數和變量是可見的。
在《高程3》中的解釋就要復雜一些
首先談到了 執行環境
執行環境定義了變量和函數有權訪問的其他數據,決定了他們各自的行為。
每一個執行環境中都有一個與之對應的 變量對象。(執行環境中定義的所有變量和函數都保存在這個對象中)。
最外層是 全局執行環境
而函數也有自己的執行環境,函數內部則是 局部執行環境
當代碼在環境中執行時,會創建該執行環境的 作用域鏈