深入淺出ES6之let和const命令
let和const聲明的變量只在代碼塊內(nèi)有效
{ let a = 10; var b = 1; } a // ReferenceError: a is not defined. b // 1
不存在變量提升
變量一定要在聲明后使用,否則報(bào)錯(cuò)
var tmp = 123; if (true) { tmp = 'abc'; // ReferenceError let tmp; }
不允許重復(fù)聲明
// 報(bào)錯(cuò) function () { let a = 10; var a = 1; }
塊級(jí)作用域
function f() { console.log('I am outside!'); } (function () { if(false) { // 重復(fù)聲明一次函數(shù)f function f() { console.log('I am inside!'); } } f(); }()); //I am inside! ES5 函數(shù)提升 //I am outside! ES6 塊級(jí)作用域
const命令
聲明一個(gè)只讀的常量,一旦聲明,常量的值就不能改變
一旦聲明變量,就必須立即初始化,不能留到以后賦值
let命令、const命令、class命令聲明的全局變量,不屬于全局對(duì)象的屬性
var a = 1; // 如果在Node的REPL環(huán)境,可以寫成global.a // 或者采用通用方法,寫成this.a window.a // 1 let b = 1; window.b // undefined
下面再單獨(dú)給大家介紹ES6之const命令
一直以來(lái)以ecma為核心的js始終沒(méi)有常量的概念,es6則彌補(bǔ)了這一個(gè)缺陷;
const foo='foo'; foo='bar';//TypeError: Assignment to constant variable.
上例聲明了一個(gè)基本類型的常量,如過(guò)試圖修改初始值則會(huì)報(bào)錯(cuò);如果是引用類型的值同樣適用,但是有一點(diǎn)需要注意,舉例說(shuō)明:
const foo=[]; foo=[1];//Assignment to constant variable.
正常報(bào)錯(cuò),沒(méi)毛病,再看:
const foo=[1,2,3]; foo[1]=4; console.log(foo)//[1, 4, 3]
這怎么沒(méi)報(bào)錯(cuò)?而且還能修改成功? 這兩個(gè)例子不一樣的地方在于前者是修改了指針(需熟悉js 引用類型)對(duì)應(yīng)的內(nèi)容改變了,后者則不是指向依然沒(méi)變 但是指向?qū)ο蟮膬?nèi)容發(fā)生改變了,對(duì)于foo而言我只是一個(gè)指針負(fù)責(zé)指向?qū)?yīng)的對(duì)象 至于對(duì)象內(nèi)容是什么就不管我的事了所以可以修改;如果不想讓內(nèi)容也改變也行使用另一個(gè)方法;
const foo=Object.freeze([1,2,3]); foo[1]=4; console.log(foo)//[1, 2, 3]
這樣就不用擔(dān)心被修改了;
- JavaScript中ES6規(guī)范中l(wèi)et和const的用法和區(qū)別
- es6中l(wèi)et和const的使用方法詳解
- ES6學(xué)習(xí)筆記之let與const用法實(shí)例分析
- ES6中l(wèi)et、const的區(qū)別及變量的解構(gòu)賦值操作方法實(shí)例分析
- ES6 let和const定義變量與常量的應(yīng)用實(shí)例分析
- ES6入門教程之let、const的使用方法
- ES6中l(wèi)et 和 const 的新特性
- ES6入門教程之let和const命令詳解
- ES6新特性一: let和const命令詳解
- ES6新增關(guān)鍵字let和const介紹
相關(guān)文章
web開發(fā)js字符串拼接占位符及conlose對(duì)象Api詳解
本篇文章主要為大家介紹了web開發(fā)中字符串的拼接,占位符的使用以及conlose對(duì)象Api的使用,有需要的朋友可以借鑒參考下,希望可以有所幫助2021-09-09js window.print實(shí)現(xiàn)打印特定控件或內(nèi)容
window.print可以打印網(wǎng)頁(yè),但有時(shí)候我們只希望打印特定控件或內(nèi)容,怎么辦呢?可以把要打印的內(nèi)容放在div中,然后用下面的代碼進(jìn)行打印,希望對(duì)大家有所幫助2013-09-09JavaScript實(shí)現(xiàn)同步于本地時(shí)間的動(dòng)態(tài)時(shí)間顯示方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)同步于本地時(shí)間的動(dòng)態(tài)時(shí)間顯示方法,實(shí)例分析了javascript獲取本地時(shí)間及動(dòng)態(tài)顯示的技巧,并對(duì)實(shí)現(xiàn)代碼進(jìn)行了較為詳盡的分析說(shuō)明,需要的朋友可以參考下2015-02-02Bootstrap Tree View簡(jiǎn)單而優(yōu)雅的樹結(jié)構(gòu)組件實(shí)例解析
本文通過(guò)實(shí)例代碼給大家介紹了Bootstrap Tree View簡(jiǎn)單而優(yōu)雅的樹結(jié)構(gòu)組件,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-06-06javascript生成json數(shù)據(jù)簡(jiǎn)單示例分享
這篇文章主要介紹了javascript生成json數(shù)據(jù)示例,需要的朋友可以參考下2014-02-02JavaScript繼承基礎(chǔ)講解(原型鏈、借用構(gòu)造函數(shù)、混合模式、原型式繼承、寄生式繼承、寄生組合式繼承)
這篇文章主要介紹了JavaScript繼承基礎(chǔ)講解,原型鏈、借用構(gòu)造函數(shù)、混合模式、原型式繼承、寄生式繼承、寄生組合式繼承,需要的朋友可以參考下2014-08-08