ES6:let 塊作用域
var a = []; for (var i = 0; i < 10; i++) { a[i] = function () { return i; } } a[8](); //10
var a = []; for (let i = 0; i < 10; i++) { a[i] = function () { return i; } } a[8](); //8
把var 改成 let,就能得到正確的結果。
這是因為,let 是 ES6 的聲明變量的關鍵字,為 JavaScript增加了塊作用域。let 聲明的變量就是屬於塊作用域,每個變量只能在最小的作用域內進行訪問。
使用 var 時每次循環中使用的都是相同變量,而 let 聲明的變量 i 會在每次循環中進行不同的綁定,得到的是不同的實例。
ES6:let 塊作用域
相關推薦
ES6:let 塊作用域
++ 綁定 urn 聲明變量 col bsp 屬於 增加 blog var a = []; for (var i = 0; i < 10; i++) { a[i] = function () { return i; } } a[8](); //10 va
微信小程序自學第三課:文件作用域,模塊化
數據 變量 span data ava 有效 函數 方法 oba 一、文件作用域 在 JavaScript 文件中聲明的變量和函數只在該文件中有效;不同的文件中可以聲明相同名字的變量和函數,不會互相影響。 通過全局函數 getApp() 可以獲取全局的應用實例,如果需要
let const關鍵字定義變數、塊作用域
let 宣告的變數只能在它所在的程式碼中有效 { let a=10; var b=1; } console.log(a); console.log(b); for迴圈 中let變數 var a=[]; for(let i=0; i< 10; i++){
Head First Servlets and JSP】筆記9:屬性的作用域、線程安全
string details attr target 部分 ring 瀏覽器 什麽是 作用 什麽是屬性? 屬性和參數 屬性的3個作用域 屬性API 屬性不好的一面 1、到底什麽是屬性(Attribute)? 屬性就是一個對象,可以被設置(bound,也可以
深入學習JavaScript之函式作用域與塊作用域
我們將作用域比作氣泡,一層巢狀一層,每一個氣泡裡面都可以放置識別符號(函式,變數)的定義,這些氣泡在書寫階段就已經確定了。 但是,究竟是什麼生成了一個新的氣泡,只有函式能夠生成氣泡嗎?JavaScipt中的其他結構能生成作用域氣泡嗎? 1.1 函式中的
es6宣告物件以及作用域與es5對比
es6宣告變數: let x=1;//宣告一個變數 const y=2;//宣告一個只讀常量,宣告時必須賦值,之後值不可修改 es5宣告變數: var z=3;//宣告一個變數 區別: let不存在變數提升,而var存在 ps:變數提升---先解析程式碼,獲取所有宣告的變
Python記錄9:函式4:名稱空間作用域+閉包函式+裝飾器
''' 一: 名稱空間namespaces 名稱空間就是存放名字與值繫結關係的記憶體空間 二: 名稱空間分為三種 內建名稱空間: 1. 特點: 存
讀書筆記4:變數、作用域和記憶體問題
基本型別和引用型別的值 (1)概念 基本型別的值指的是簡單的資料段,而引用型別的值指那些可能由多個值構成的物件。 引用型別的值是儲存在記憶體中的物件。JavaScript 不允許直接操作物件的記憶體空間,實際上操作的是物件的引用,而不是實際的物件。
3.8.1 塊作用域
在深入學習控制結構之前,需要了解塊(block)的概念。 塊(即符合語句)是指由一對大括號括起來的若干條簡單的Java語句。塊確定了變數的作用域。一個塊可以巢狀在另一個塊中。但是,不能在巢狀的兩個塊中宣告同名變數。因為內
【學習筆記】四:變數、作用域和記憶體問題
1.引用型別的值 引用型別的值是指儲存在記憶體中的物件,JavaScript不允許直接訪問記憶體中的位置,因此在操作物件時,實際上是操作的引用而不是實際的物件。(嚴密的說法是:當複製儲存著物件的某個變數時,操作的是物件的引用。但為物件新增屬性時,操作的是實際物件)。 1)引用型別可以動態新增屬性。
讀書筆記《你不知道的JavaScript上卷》1.3函式作用域和塊作用域
函式作用域和塊作用域 函式作用域:屬於這個函式的全部變數都可以在整個函式的範圍內訪問(事實上在巢狀的作用域中也可以訪問)。 3.1 函式中的作用域 函式可以形成作用域,這個大家都知道的,如下程式碼: function foo() { var a
理清JS中的詞法、靜態、動態、函式、塊作用域
呃剛剛寫了好多,結果被我誤操作覆蓋掉了,我的心血 ╥﹏╥… 沒關係重新寫一遍,也提醒同樣在這個平臺寫部落格並且像我一樣喜歡使用markdown語言碼字的同學 “儲存線上到草稿”是一個好習慣,嗯嗯 今天雙十一,感覺該剁手了。。 很多同學在學習JavaS
【讀書筆記】你唔知JS 函式作用域和塊作用域
函式中的作用域 1.無論識別符號宣告出現在作用域中的何處, 這個識別符號所代表的變數或函式都將附屬於所處作用域的氣泡。 2.這些識別符號全都無法從全域性作用域中進行訪問, 因此會導致ReferenceError 錯誤。 隱藏
python學習筆記4:變量作用域
ring 返回 模塊 func 無法使用 不返回 作用域 但是 字符 變量作用域 變量由作用範圍限制 分類:按照作用域分類 全局(global): 在函數外部定義 局部(local):在函數內部定義 變量的作用範圍: 全局變量:在整個全局範圍都有效 全局變量在局部可
Java Web學習(18):JavaBean四大作用域
一JavaBean作用域 JavaBean就是把程式中的實體物件及業務邏輯單獨的封裝到Java類當中。然後再JSP頁面中呼叫這個封裝好的 類,這樣可以降低HTML與Java程式碼的耦合度,簡化介面。 JavaBean有四個作用域範圍,我們使用&l
錯題本:變數的作用域以及隱式轉換
今天進行了一次週考,其中有兩道不錯的題,第一是記錄一下,第二也是分享一下 第一題:變數的作用域 var x=10; var y=20; function f(x){ x=x+10; y=x; } f(x); console.log(x,y); 首先,這道
PL真有意思(三):名字、作用域和約束
前言 這兩篇寫了詞法分析和語法分析,比較偏向實踐。這一篇來看一下語言設計裡一個比較重要的部分:名字。在大部分語言裡,名字就是識別符號,如果從抽象層面來看名字就是對更低一級的記憶體之類的概念的一層抽象。但是名字還有其它相關的比如它的約束時間和生存週期等等 約束時間 約束就是兩個東西之間的一種關聯,例如一個名字和
對塊作用域與變數函式提升再添新認識
[toc] # 關於這篇部落格 這篇部落格是在我讀《你不知道的JavaScript-上卷》的時候,遇到的我覺得需要記錄下來的知識。 剛好又能夠配合之前我寫的這篇[執行上下文與執行上下文棧部落格](https://www.cnblogs.com/fitzlovecode/p/jsadvanced7.htm
ES6標準入門 第二章:塊級作用域 以及 let和const命令
函數聲明 web 頂部 16px 地址 value length window對象 成功 一、塊級作用域 1、為什麽需要塊級作用域? ES5中只有全局作用域和函數作用域,帶來很多不合理的場景。 (1)內層變量可能會覆蓋外層變量; var tem = ne
ES6精解(1):let、const、塊級作用域
let命令 ES6新增了let命令,跟var類似,都是用來宣告變數的 1.不允許重複宣告 { let a = 1; let a = 2;//報錯 } 2.不存在變數提升 { console.log(b);//報錯