摘要:在入門時,最讓人傻傻分不清楚的就是與帶來的作用域的苦惱。明確循環(huán)內(nèi)部的與中的是在不同的作用域中,它們有各自多帶帶的作用域。局部使用定義時只在該函數(shù)作用域內(nèi)部有效。
在es6入門時,最讓人傻傻分不清楚的就是var與let帶來的作用域的苦惱。最近又一次翻看阮一峰老師的文章,重新有了自己的小結(jié)。
代碼分析
var a = []; for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i); }; } a[6](); // 10
var a = []; for (let i = 0; i < 10; i++) { a[i] = function () { console.log(i); }; } a[6](); // 6
以上兩段代碼區(qū)別在于var與let使用的作用域不同。
1.var 變量的作用域是全局,而let 是局部的塊作用域即for循環(huán)內(nèi)。
2.明確循環(huán)內(nèi)部的i與console.log(i)中的i是在不同的作用域中,它們有各自多帶帶的作用域。
3.全局變量唯一性,var 聲明的變量i在循環(huán)中被不斷覆蓋最終只是唯一的10,因此在外部調(diào)用中無論調(diào)用a數(shù)組的哪一個,最終都是10。
4.局部使用 let 定義時只在該函數(shù)作用域內(nèi)部有效。例子如下:
for (let i = 0; i < 10; i++) { // ... } console.log(i); // ReferenceError: i is not defined
個人小結(jié),如有錯誤,望各位大佬指正。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/90537.html
摘要:會出現(xiàn)這樣的情況是因為擁有暫時性死區(qū)。規(guī)定暫時性死區(qū)和語句不出現(xiàn)變量提升,主要是為了減少運行時錯誤,防止在變量聲明前就使用這個變量,從而導致意料之外的行為。 首先我們應(yīng)該知道js引擎在讀取js代碼時會進行兩個步驟: 第一個步驟是解釋。 第二個步驟是執(zhí)行。 所謂解釋就是會先通篇掃描所有的Js代碼,然后把所有聲明提升到頂端,第二步是執(zhí)行,執(zhí)行就是操作一類的。 我們先來看個簡單的變量提升...
摘要:前言和的區(qū)別是老生常談,看到網(wǎng)上一些文章的總結(jié),有的不太全面,甚至有的描述不太準確,在這里盡量全面的總結(jié)下這三者的區(qū)別。最后以上大概是總結(jié)后的內(nèi)容,看來,還是多用吧。 前言 var 和 let 的區(qū)別是老生常談,看到網(wǎng)上一些文章的總結(jié),有的不太全面,甚至有的描述不太準確,在這里盡量全面的總結(jié)下這三者的區(qū)別。 let 是 ES6新增的變量類型,用來代替 var 的一些缺陷,跟 var...
摘要:打印錯誤配合循環(huán)的獨特應(yīng)用非常適合用于循環(huán)內(nèi)部的塊級作用域。看一個常見的面試題目同步注冊回調(diào)函數(shù)到異步的宏任務(wù)隊列。是循環(huán)體內(nèi)局部作用域,不受外界影響。 1. 定義變量 聲明語法 var upperA = A; let upperB = B; const upperC = C; 只聲明不初始化的結(jié)果,【const定義的常量不可以修改,而且必須初始化。】 // var 聲明變量 ...
摘要:在同一個塊內(nèi),不允許用重復聲明變量。中為新增了塊級作用域。自帶遍歷器的對象有數(shù)組字符串類數(shù)組對象對象的對象等和結(jié)構(gòu)對象。返回一個遍歷器,使遍歷數(shù)組的鍵值對鍵名鍵值。 目錄 1.語法 2.類型、值和變量 3.表達式和運算符 4.語句 5.數(shù)組 6.對象 7.函數(shù) 8.全局屬性和方法 9.詞法作用域、作用域鏈、閉包 10.原型鏈、繼承機制 11.this的理解 12.ES5新特性 13.E...
摘要:也毫不例外,但在中作用域的特性與其他高級語言稍有不同,這是很多學習者久久難以理清的一個核心知識點。主要使用的是函數(shù)作用域。 關(guān)于作用域:About Scope 作用域是程序設(shè)計里的基礎(chǔ)特性,是作用域使得程序運行時可以使用變量存儲值、記錄和改變程序的狀態(tài)。JavaScript 也毫不例外,但在 JavaScript 中作用域的特性與其他高級語言稍有不同,這是很多學習者久久難以理清的一個核...
閱讀 1147·2019-08-30 12:44
閱讀 655·2019-08-29 13:03
閱讀 2563·2019-08-28 18:15
閱讀 2431·2019-08-26 10:41
閱讀 3093·2019-08-26 10:28
閱讀 3041·2019-08-23 16:54
閱讀 1994·2019-08-23 15:16
閱讀 818·2019-08-23 14:55