JavaScript進階——ES6(五)
阿新 • • 發佈:2022-05-25
ES6簡介
什麼是ES6?
ES的全稱是ECMAScript,它是由ECMA國際標準化組織,制定的一項指令碼語言的標準化規範。
年份 | 版本 |
---|---|
2015年6月 | ES2015 |
2016年6月 | ES2016 |
2017年6月 | ES2017 |
2018年6月 | ES2018 |
... | ... |
ES6實際上是一個泛指,泛指ES2015及其後續的版本。
為什麼使用ES6
每一次標準的誕生都意味著語言的完善,功能的加強。JavaScript語言本身也有一些令人不滿意的地方。
-
變數提升特性增加了程式執行時的不可預測性。
-
語法過於鬆散,實現相同的功能,不同的人可能會寫出不同的程式碼。
ES6的新增語法
let
ES6中新增的用於宣告變數的關鍵字。
- let宣告的變數只在所處於的塊級有效
if(true){
let a = 10 ;
}
console.log(a) // a is not defind
使用let關鍵字宣告的變數才具有塊級作用域,使用var宣告的變數不具備塊級作用域特性。
- 不存在變數提升
```
console.log(a) // a is not defined
let a = 20;
```
- 暫時性死區
```
var temp = 123;
if(true){
temp = 'abc';
let temp;
}
```
const
作用:宣告常量,常量就是值(記憶體地址)不能變化的量。
- 具有塊級作用域
if(true){
const a = 10;
}
// a is not defined
- 宣告常量時必須賦值
const PI; // Missing initializer in const declaration
- 常量賦值後,值不能更改。
const PI = 3.14;
PI = 100; // Assignment to constant variable.
const ary = [100,200]; ary[0] = 'a'; ary[1] = 'b'; console.log(arg); // ['a','b']; ary = ['a','b'] // Assignment to constant variable.
let、const、var的區別
- 使用var宣告的變數,其作用域為該語句所在的函式內,且存在變數提升現象。
- 使用let宣告的變數,其作用域為該語句所在的程式碼塊內,不存在變數提升。
- 使用const宣告的是常量,在後面出現的程式碼中不能再修改該常量的值。
var | let | const |
---|---|---|
函式級作用域 | 塊級作用域 | 塊級作用域 |
變數提升 | 不存在變數提升 | 不存在變數提升 |
值可更改 | 值可更改 | 值不可更改 |
解構賦值
ES6允許從陣列中,提取值,按照對應位置,對變數賦值。物件也可以實現解構。
陣列解構
let[a,b,c] = [1,2,3]
console.log('' + a + b + c)
如果解構不成功,變數的值為undefined
let [foo] = [];
let[bar,foo] = [1];
按照一定模式,從陣列中或物件中提取值,將提取出來的值賦給另外的變數。
物件結構
let person = {name:'zhangsan', agg:19};
let{name, age} = person;
console.log(name); // '張三'
console.log(age); // 20
let{name:myName, age:myAge} = person; // myName myAge 屬於別名
console.log(myName); // 'zhangsan'
console.log(myAge); // 19