什么是“執行上下文”(也叫做“執行上下文環境”)?暫且不下定義,先看一段代碼: 第一句報錯,a未定義,很正常。第二句、第三句輸出都是undefined,說明瀏覽器在執行console.log(a)時,已經知道了a是undefined,但卻不知道a是10(第三句中)。 在一段js代碼拿過來 ...
繼續上一篇文章 http: www.cnblogs.com wangfupeng p .html 的內容。 上一篇我們講到在全局環境下的代碼段中,執行上下文環境中有如何數據: 變量 函數表達式 變量聲明,默認賦值為undefined this 賦值 函數聲明 賦值 如果在函數中,除了以上數據之外,還會有其他數據。先看以下代碼: 以上代碼展示了在函數體的語句執行之前,arguments變量和函數的參 ...
2014-09-23 08:43 25 47364 推薦指數:
什么是“執行上下文”(也叫做“執行上下文環境”)?暫且不下定義,先看一段代碼: 第一句報錯,a未定義,很正常。第二句、第三句輸出都是undefined,說明瀏覽器在執行console.log(a)時,已經知道了a是undefined,但卻不知道a是10(第三句中)。 在一段js代碼拿過來 ...
繼續上文的內容。 執行全局代碼時,會產生一個執行上下文環境,每次調用函數都又會產生執行上下文環境。當函數調用完成時,這個上下文環境以及其中的數據都會被消除,再重新回到全局上下文環境。處於活動狀態的執行上下文環境只有一個。 其實這是一個壓棧出棧的過程——執行上下文棧。如下圖: 可根據 ...
上文簡單介紹了作用域,本文把作用域和上下文環境結合起來說一下,會理解的更深一些。 如上圖,我們在上文中已經介紹了,除了全局作用域之外,每個函數都會創建自己的作用域,作用域在函數定義時就已經確定了。而不是在函數調用時確定。 下面我們將按照程序執行的順序,一步一步把各個上下文環境 ...
本系列用了大量的篇幅講解了上下文環境和作用域,有些人反映這兩個是一回兒事。本文就用一個小例子來說明一下,作用域和上下文環境絕對不是一回事兒。 再說明之前,咱們先用簡單的語言來概括一下這兩個的區別。 00 上下文環境: 可以理解為一個看不見摸不着的對象(有若干個屬性),雖然看不見摸不着 ...
前言 如果你是一名 JavaScript 開發者,或者想要成為一名 JavaScript 開發者,那么你必須知道 JavaScript 程序內部的執行機制。執行上下文和執行棧是 JavaScript 中關鍵概念之一,是 JavaScript 難點之一。 理解執行上下文和執行棧同樣有助於理解 ...
接着上一節講的話,應該輪到“執行上下文棧”了,但是這里不得不插入一節,把this說一下。因為this很重要,js的面試題如果不出幾個與this有關的,那出題者都不合格。 其實,this的取值,分四種情況。我們來挨個看一下。 在此再強調一遍一個非常重要的知識點:在函數中this到底取何值 ...
為何用“繼承”為標題,而不用“原型鏈”? 原型鏈如果解釋清楚了很容易理解,不會與常用的java/C#產生混淆。而“繼承”確實常用面向對象語言中最基本的概念,但是java中的繼承與javascript中的繼承又完全是兩回事兒。因此,這里把“繼承”着重拿出來,就為了體現 ...
從下面目錄中可以看到,本系列有16篇文章,外加兩篇后補的,一共18篇文章。寫了半個月,從9月17號開始寫的。每篇文章更新時,讀者的反饋還是可以的,雖然不至於上頭條,但是也算是中規中矩,有看的人,也有評論的人。特別是在后期講閉包的時候。 我從來都不做基礎入門教程,因為基礎入門的教程,要想 ...