原生js面試題:作用域和作用域鏈,let聲明的全局變量不是window對象的屬性 JavaScript從入門到精通專欄收錄該內容146 篇文章28 訂閱訂閱專欄 這篇博文是我在心情不好的情況下寫的。 一、作用域作用域,就是變量起作用的區域(范圍)。或者說,js代碼執行時,查找變量的范圍 ...
在ES 中,頂層對象的屬性和全局變量是等價的,var 命令和 function 命令聲明的全局變量,自然也是頂層對象。 但ES 規定,var 命令和 function 命令聲明的全局變量,依舊是頂層對象的屬性,但 let命令 const命令 class命令聲明的全局變量,不屬於頂層對象的屬性。 在哪里 怎么獲取 通過在設置斷點,看看瀏覽器是怎么處理的: 通過上圖也可以看到,在全局作用域中,用 le ...
2019-07-18 15:39 0 890 推薦指數:
原生js面試題:作用域和作用域鏈,let聲明的全局變量不是window對象的屬性 JavaScript從入門到精通專欄收錄該內容146 篇文章28 訂閱訂閱專欄 這篇博文是我在心情不好的情況下寫的。 一、作用域作用域,就是變量起作用的區域(范圍)。或者說,js代碼執行時,查找變量的范圍 ...
總結:在全局定義變量時(包括定義函數),var所定義的變量(以及function定義的函數)具有全局作用域,所以定義完畢以后就會添加入全局對象(在瀏覽器中即window全局對象)。window全局對象中的變量,可以通過window.xxx來訪問到。由於const let定義的變量是塊級 ...
先來看一道題 let id = 2; let json = { id: 1, show:function(){ setTimeout(function(){ console.log(this.id); },2000 ...
沒有自己的this。 我又想了一下,變量arr調用方法removeFirPos(),那么這個this不就是指向了arr嗎,后來一 ...
let和var聲明變量的區別:1.let所聲明的變量只在let命令所在的代碼塊內有效。(塊級作用域) 另外,for循環還有一個特別之處,就是設置循環變量的那部分是一個父作用域,而循環體內部是一個單獨的子作用域。 2.let命令不存在變量 ...
1、const (1)給常量賦值並輸出 測試: 可以正常輸出 (2)修改 (3)不賦值 const可以保證數據的安全性,雖然不能改變對象的值,但是可以改變對象的指向。 2、var (1)定義並賦值 ...
ES6之前,JS都只用var聲明變量。ES6不僅增加了let和const兩個關鍵字,而且還讓這兩個關鍵字壓倒性的超越var成為首選。 1.var 使用var聲明變量,變量會被自動添加到最近的上下文(作用域)。 如在函數中,最近的上下文就是函數的局部上下文。如果變量未經聲明就被初始化 ...
使用var關鍵字聲明的全局作用域變量屬於window對象。 使用let關鍵字聲明的全局作用域變量不屬於window對象。 使用var關鍵字聲明的變量在任何地方都可以修改。 在相同的作用域或塊級作用域中,不能使用let關鍵字來重置var關鍵字聲明的變量。 在相同的作用域或塊級作用域中,不能使 ...