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 如果使用解構賦值的特性,將會使等效的 變得更加簡潔並且可讀性更高 陣列與迭代器的解構 ...