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