ECMAScript 6 -- let和const命令

ES6新增了let命令,用來聲明變量。它的用法類似于var,但是所聲明的變量,只在let命令所在的代碼塊內有效。

for (let i = 0; i < 10; i++) {console.log(i);}

可以執行

for (let i = 0; i < 10; i++) {}console.log(i);

就會報錯

ncaught ReferenceError: i is not definedat <anonymous>:3:13at Object.InjectedScript._evaluateOn (<anonymous>:145:167)at Object.InjectedScript._evaluateAndWrap (<anonymous>:137:25)at Object.InjectedScript.evaluate (<anonymous>:118:14)

let var使用區別:

var:

var a = [];
for (var i = 0; i < 10; i++) {a[i] = function () {console.log(i);};
}
a[6]();

結果:

10

變量ivar聲明的,在全局范圍內都有效,所以全局只有一個變量i。每一次循環,變量i的值都會發生改變,而循環內被賦給數組afunction在運行時,會通過閉包讀到這同一個變量i,導致最后輸出的是最后一輪的i的值,也就是10。

let:

var a = [];
for (let i = 0; i < 10; i++) {a[i] = function () {console.log(i);};
}
a[6]();

結果:

6

變量ilet聲明的,當前的i只在本輪循環有效,所以每一次循環的i其實都是一個新的變量,所以最后輸出的是6。

?

for循環還有一個特別之處,就是循環語句部分是一個父作用域,而循環體內部是一個單獨的子作用域。

不存在變量升級:

// var 的情況
console.log(foo); // 輸出undefined
var foo = 2;// let 的情況
console.log(bar); // 報錯ReferenceError
let bar = 2;
VM171:2 undefined

報錯:

VM171:6 Uncaught ReferenceError: bar is not definedat <anonymous>:6:13at Object.InjectedScript._evaluateOn (<anonymous>:145:167)at Object.InjectedScript._evaluateAndWrap (<anonymous>:137:25)at Object.InjectedScript.evaluate (<anonymous>:118:14)(anonymous function) @ VM171:6InjectedScript._evaluateOn @ VM68:145InjectedScript._evaluateAndWrap @ VM68:137InjectedScript.evaluate @ VM68:118

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456444.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456444.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456444.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

機器學習之樸素貝葉斯算法的推理及相關知識總結

文章目錄1、樸素貝葉斯公式1.1、貝葉斯公式的應用2、了解貝葉斯網絡2.1、知道什么是貝葉斯網絡2.2、貝葉斯網絡的兩種表示形式2.3、掌握全連接的貝葉斯網絡的公式2.3、知道條件概率表參數個數分析的方法2.4、掌握變量聯合分布概率的公式及含義2.5、知道馬爾科夫模型3、了解D-se…

mysql之外鍵

外鍵的作用,主要有兩個: 一個是讓數據庫自己通過外鍵來保證數據的完整性和一致性 一個就是能夠增加ER圖的可讀性 有些人認為外鍵的建立會給開發時操作數據庫帶來很大的麻煩.因為數據庫有時候會由于沒有通過外鍵的檢測而使得開發人員刪除,插入操作失敗.他們覺得這樣很麻煩 …

Android onLoadFinished與onLoaderReset

onLoadFinished 這個方法是在前面已創建的加載器已經完成其加載過程后被調用&#xff0c;這個方法保證會在應用到加載器上的數據被釋放之前被調用。在此方法中&#xff0c;你必須刪除所有對舊數據的使用(因為它將很快會被刪除)&#xff0c;但是不要自己去釋放它們&#xff0c;因…

HA機制的大數據集群的搭建過程

文章目錄集群規劃1、 準備Linux環境1.1、修改Linux主機名1.3、修改主機名和IP的映射關系1.4、關閉防火墻1.5、ssh免登陸&#xff08;主節點和從節點之間&#xff09;2、 安裝JDK2.1、上傳2.2、解壓jdk2.3、將java添加到環境變量中2.4、刷新配置2.5、驗證3、安裝zookeeper3.1、解…

Linux系統7個運行級別圖文詳解

Linux系統7個運行級別圖文詳解 當安裝linux操作系統時將選擇下列那一個操作 ______ A&#xff0e;選擇 "圖形登錄方式" 設定系統開始運行級為4 B&#xff0e;選擇 "文本登錄方式" 設定系統開始運行級為3 C&#xff0e;選擇 "文本登錄方式" 設定系…

CRISPR基因編輯

2007年&#xff0c;一家酸奶公司發現一種細菌擁有抵御病毒的特殊防御機制。2012年&#xff0c;細菌的這種機制就被科學家闡述清楚&#xff0c;2013年這一領域快速增長。它被視為分子生物學的一個奇跡&#xff0c;事實上&#xff0c;它并非僅對生物學家產生革命的影響&#xff0…

酒店之王

酒店之王 題目描述 XX酒店的老板想成為酒店之王&#xff0c;本著這種希望&#xff0c;第一步要將酒店變得人性化。由于很多來住店的旅客有自己喜好的房間色調、陽光等&#xff0c;也有自己所愛的菜&#xff0c;但是該酒店只有p間房間&#xff0c;一天只有固定的q道不同的菜。 有…

使用IntelliJ IDEA碰到的問題總結

文章目錄問題一&#xff1a;無法創建Java Class文件問題一&#xff1a;無法創建Java Class文件 今天打開項目時&#xff0c;發現右擊新建不了java.class文件&#xff0c;于是嘗試了以下方法&#xff1a; &#xff08;1&#xff09;選擇 File——>Project Structure——>…

為什么shell腳本第一行要#!/bin/sh

告訴操作系統, 此腳本的解釋器為 /bin/sh 這個可執行文件 類似地, 如果你的腳本用 bash, ksh, 解釋, 第一行就應該是#!/bin/bash #!/bin/ksh 之類的 或者, 你自己定義一種腳本語言, 再自己寫個解釋器去執行它, 比如說叫 xshell, 放在 /usr/local/bin 下, 你的腳本第一行就應該是…

linux文本處理常用指令總結

引子 作為一個偏愛windows的程序員&#xff0c;以前做文本處理的時候總是喜歡在windows下用notepad等圖形化工具處理&#xff0c;比如有時需要把linux服務器上一個文件進行一次全局字符串替換這樣簡單的操作&#xff0c;還得把文件down到本地編輯好再傳回去。這兩天買了本《鳥哥…

CSS——基礎選擇器

CSS的基礎選擇器1 CSS指的是層疊樣式表2 CSS規則由兩個主要的部分構成選擇器&#xff0c;以及一條或多條聲明3 選擇器通常是你需要改變樣式的 HTML 元素如h14 每條聲明由一個屬性和一個值組成&#xff0c;每個屬性有一個值&#xff0c;屬性和值被冒號分開5 屬性大于 …

Linux中chown和chmod的區別和用法

chmod修改第一列內容&#xff0c; chown修改第3、4列內容&#xff1a; chown用法&#xff1a; 用來更改某個目錄或文件的用戶名和用戶組。 chown 用戶名:組名 文件路徑&#xff08;可以是絕對路徑也可以是相對路徑&#xff09; 例1&#xff1a;chown root:root /tmp/tmp1 就…

玩大數據期間碰到的一些問題總結

文章目錄問題一&#xff1a;Zookeeper節點數量為什么建議是奇數個&#xff1f;問題二&#xff1a;HA機制的Hadoop集群中Journal Node 作用問題三&#xff1a;兩個datanode節點互相排斥怎么解決&#xff08;集群無法識別新加入的Datanode&#xff09;&#xff1f;問題四&#xf…

JAVA的SSH框架登錄注冊

Struts 的MVC設計模式可以使我們的邏輯變得很清晰&#xff0c;主要負責表示層的顯示。 Spring 的IOC和AOP可以使我們的項目在最大限度上解藕。 hibernate的就是實體對象的持久化了, 數據庫的封裝。 項目截圖&#xff1a;(代碼是按照項目截圖上傳的&#xff0c;直接對號入座即可…

Visual Studio Code 前端調試不完全指南

本文最初發布于我的個人博客&#xff1a;咀嚼之味Visual Studio Code (以下簡稱 vscode) 如今已經代替 Sublime&#xff0c;成為前端工程師們最喜愛的代碼編輯器。它作為一個大型的開源項目&#xff0c;不斷推陳出新&#xff1b;社區中涌現出大量優質的插件&#xff0c;以支持我…

MySQL中(delete、truncate、drop) 的區別

delete、truncate、drop的用法 MySQL 數據表中delete刪除數據的通用語法&#xff1a; ###刪除 students_tbl 表中 student_id 為3 的記錄&#xff1a; delete from students_tbl where student_id3; MySQL 數據表中truncate刪除數據的通用語法&#xff1a; ###刪除 students_…

機器學習之LDA主題模型算法

文章目錄1、知道LDA的特點和應用方向1.1、特點1.2、應用方向2、知道Beta分布和Dirichlet分布數學含義3、了解共軛先驗分布4、知道先驗概率和后驗概率5、知道參數α值的大小對應的含義6、掌握LDA主題模型的生成過程7、知道超參數α等值的參考值8、LDA總結1、知道LDA的特點和應用…

分別寫出引入CSS的3種方式, 特點, 優先級

第一&#xff1a;css的三種引入方式 1.行內樣式 最直接最簡單的一種&#xff0c;直接對HTML標簽使用style""&#xff0c;例如&#xff1a; <p style"color:#F00; "></p> 缺點&#xff1a;HTML頁面不純凈&#xff0c;文件體積大&#xff0c…

[Go] Template 使用簡介

Golang 提供了兩個標準庫用來處理模板 text/template 和 html/template。我們使用 html/template 格式化 html 字符。 模板引擎 模板引擎很多&#xff0c;Python 的 jinja&#xff0c;nodejs 的 jade 等都很好。所謂模板引擎&#xff0c;則將模板和數據進行渲染的輸出格式化后的…

內存泄露監測

2019獨角獸企業重金招聘Python工程師標準>>> iOS 內存泄露監測 144 作者 謝謝生活 已關注 2017.05.19 17:38* 字數 4235 閱讀 209評論 0喜歡 6 iOS可能存在的內存泄露&#xff1a;block 循環引用。當一個對象有一個block屬性&#xff0c;而block屬性又引用這個對象…