原生js面試題:作用域和作用域鏈,let聲明的全局變量不是window對象的屬性 JavaScript從入門到精通專欄收錄該內容146 篇文章28 訂閱訂閱專欄 這篇博文是我在心情不好的情況下寫的。 一、作用域作用域,就是變量起作用的區域(范圍)。或者說,js代碼執行時,查找變量的范圍 ...
今天在控制台寫刪除數組第一個元素的代碼時,發現了一個問題,以下是書中源碼, 按這個源碼,我進行了更改,使用了箭頭函數,如下 然后發現報錯,typeerror:this.reIndex is not a function。查找下發現箭頭函數沒有自己的this。 我又想了一下,變量arr調用方法removeFirPos ,那么這個this不就是指向了arr嗎,后來一想。。。這不是非箭頭函數時候的指向嘛 ...
2020-11-13 20:12 0 409 推薦指數:
原生js面試題:作用域和作用域鏈,let聲明的全局變量不是window對象的屬性 JavaScript從入門到精通專欄收錄該內容146 篇文章28 訂閱訂閱專欄 這篇博文是我在心情不好的情況下寫的。 一、作用域作用域,就是變量起作用的區域(范圍)。或者說,js代碼執行時,查找變量的范圍 ...
[x] 知識點1 全局變量和window屬性上定義的變量的區別: 全局變量不能通過delete刪除,而window屬性上定義的變量可以通過delete刪除 [x] 知識點2 嘗試訪問未聲明的變量會報錯,..is not defined 但是通過查詢window查詢 ...
所有在全局作用域中聲明的變量、函數都會變成window對象的屬性和方法。 即: var age = 55; 可以通過window.age訪問 然而全局變量和與在window對象上定義的屬性還是有一點區別的: 全局變量不能通過delete操作符刪除,二在window上定義 ...
先來看一道題 let id = 2; let json = { id: 1, show:function(){ setTimeout(function(){ console.log(this.id); },2000 ...
全局對象也叫為頂層對象,是js里面預定義的對象,作為js的全局函數和全局變量的占位符。(在網頁里是window對象、在node里面是Global對象) 全局對象上的屬性和方法可以直接使用,不用指定所屬對象(a)。 在全局作用域聲明的變量和函數是作為window對象的屬性和方法而存在 ...
自己通過看typescript官方文檔里的let聲明,與阮一峰老師翻譯的的es6學習文檔,總結以下三點 1、var聲明可以多次重復聲明同一個變量,let不行 2、let變量只在塊級作用域里面有效果,var 變量不存在塊級作用域(塊級作用域指用{}包裝的代碼塊,個人理解) 3、let變量 ...
最近在看C Primer Plus 12.5章節,發現一段樣例代碼使用的全局變量,再次記錄一下 簡而言之: 1. 在.c源文件定義全局變量 2. 在.h頭文件用extern聲明這個全局變量 3. 如果其他.c文件需要使用這個全局變量,只要包含頭文件就可以了,不用在c文件重新extern聲明 ...
在ES5中,頂層對象的屬性和全局變量是等價的,var 命令和 function 命令聲明的全局變量,自然也是頂層對象。 但ES6規定,var 命令和 function 命令聲明的全局變量,依舊是頂層對象的屬性,但 let命令、const命令、class命令聲明的全局變量,不屬於頂層 ...