深入淺出ES6之let和const命令

2022-10-06 17:03:11 字數 1367 閱讀 9267

let和const宣告的變數只在**塊內有效

a // referenceerror: a is not defined.

b // 1

不存在變數提公升

變數一定要在宣告後使用,否則報錯

var tmp = 123;

if (true)

不允許重複宣告

// 報錯

function ()

塊級作用域

function f()

(function ()

}f();

}());

//i am inside! espgzjb5 函式提公升

//i am outside! es6 塊級作用域

const命令

宣告乙個唯讀的常量,一旦宣告,常量的值就不能改變

一旦宣告變數,就必須立即初始化,不能留到以後賦值

let命令、const命令、class命令宣告的全域性變數,不屬於全域性物件的屬性

var a = 1;

// 如果在node的repl環境,可以寫成global.a

// 或者採用通用方法,寫成this.a

window.a // 1

let b = 1;

wi程式設計客棧ndow.b // undefined

下面再單獨給大家介紹es6之const命令

一直以來以ecma為核心的js始終沒有常量的概念,es6則彌補了這乙個缺陷;

const foo='foo';

foo='bar';//typeerror: assignment to constant varia

上例宣告了乙個基本型別的常量,如過試圖修改初始值則會報錯;如果是引用型別的值同樣適用,但是有一點需要注意,舉例說明:

const foo=;  

foo=[1];//assignment to constant variable.

正常報錯,沒毛病,再看:

const foo=[1,2,3];

foo[1]=4;

console.log(foo)//[1, 4, 3]

這怎麼沒報錯?而且還能修改成功? 這兩個例子不一樣的地方在於前者是修改了指標(需熟悉js 引用型別)對應的內容改變了,後者則不是指向依然沒變 但是指向物件的內容發生改變了,對於foo而言我只是乙個指標負責指向對應的物件 至於物件內容是什麼就不管我的事了所以可以修改;如果不想讓內容也改變也行使用另乙個方法;

const foo=object.freeze([1,2,3])pgzjb;

foo[1]=4;

console.log(foo)//[1, 2, 3]

這樣就不用擔心被修改了;

本文標題: 深入淺出es6之let和const命令

本文位址:

ES6深入淺出 Generator

一步,一步前進 一步 es6深入淺出之generator生成器。本人對生成器的印象是語法難以理解,又沒有什麼實際的應用場景。為啥要學習一下呢?可能未來某些高階的業務會用到,還有萬一面試官問的話,我得能侃幾句,顯得我牛。定義generator 是為非同步而生,正常的函式是一進入就必須執行完成的,而 g...

深入淺出es6(箭頭函式)

是function的簡寫形式,支援expression和statement兩種形式。同時一點很重要的時是他擁有詞法作用域this值,幫助你很好的解決this的指向問題,這是乙個很酷的方式,可以幫助你減少一些 的編寫,先來看看它的語法。var arr 1,2,3 arr.map item item 1...

《ES6深入淺出》學習筆記 三

解構 destructuring 通常來說,你很可能這樣訪問陣列中的前三個元素 var first somearray 0 var second somearray 1 var third somearray 2 如果使用解構賦值的特性,將會使等效的 變得更加簡潔並且可讀性更高 陣列與迭代器的解構 ...