ES6簡介
ES6缚俏, 全稱 ECMAScript 6.0 尔崔,是 JavaScript 的下一個(gè)版本標(biāo)準(zhǔn),2015.06 發(fā)版疑枯。
ES6 主要是為了解決 ES5 的先天不足,比如 JavaScript 里并沒有類的概念蛔六,但是目前瀏覽器的 JavaScript 是 ES5 版本,大多數(shù)高版本的瀏覽器也支持 ES6废亭,不過只實(shí)現(xiàn)了 ES6 的部分特性和功能国章。
ES6 let 與 const
ES6 新增加了兩個(gè)重要的 JavaScript 關(guān)鍵字: let 和 const。
let 聲明的變量只在 let 命令所在的代碼塊內(nèi)有效豆村。
const 聲明一個(gè)只讀的常量液兽,一旦聲明,常量的值就不能改變掌动。
let 命令
- 代碼塊內(nèi)有效
{
let a=0;
var b=1;
}
console.log(a,b);
// a is not difined
- 不能重復(fù)聲明
var a=1;
var a=2;
let b=3;
let b=4;
console.log(a,b);
// b Identifier 'b' has already been declared
- 不存在變量提升
console.log(a);//a is not defined
var a = 1;
console.log(a); //Cannot access 'a' before initialization
let a = "apple";
//變量 b 用 var 聲明存在變量提升四啰,所以當(dāng)腳本開始運(yùn)行的時(shí)候,b 已經(jīng)存在了粗恢,但是還沒有賦值柑晒,所以會輸出 undefined。
//變量 a 用 let 聲明不存在變量提升眷射,在聲明變量 a 之前匙赞,a 不存在,所以會報(bào)錯(cuò)妖碉。
var 聲明變量特點(diǎn)
(1)允許重復(fù)聲明
(2)存在變量提升
(3)存在就近原則
(4)全局變量會作為全局對象window的屬性
(5)只受函數(shù)作用域的限制
const命令 用來聲明常量
- 常量初始化完成涌庭,不允許二次賦值。
const a=11;
a=22;
console.log(a);//Assignment to constant variable.
- 常量不允許只聲明不賦值欧宜。
const a;
console.log(a);//Missing initializer in const declaration
var b;
console.log(b);//undefined
概述
解構(gòu)賦值是對賦值運(yùn)算符的擴(kuò)展坐榆。
他是一種針對數(shù)組或者對象進(jìn)行模式匹配,然后對其中的變量進(jìn)行賦值冗茸。
在代碼書寫上簡潔且易讀席镀,語義更加清晰明了匹中;也方便了復(fù)雜對象中數(shù)據(jù)字段獲取。
解構(gòu)賦值:允許將相同結(jié)構(gòu)的值賦值給變量(模式匹配愉昆,=左右兩側(cè)模式相同才能解構(gòu)职员,否則解構(gòu)失敗,變量值為undefined)
1. 數(shù)組解構(gòu)賦值: [value,value,value,...]
有數(shù)組:[1,2,3,4,5]跛溉,需要定義變量a,b,c,d,e來接收數(shù)組元素的值焊切。
let arr = [1, 2, 3, 4, 5];
// ES5
// let a = arr[0],
// b = arr[1],
// c = arr[2],
// d = arr[3],
// e = arr[4];
// ES6 數(shù)組解構(gòu)
let [f,b,e,d,c] = arr;
console.log(f,b,c,d,e);
// let [a,b,[c,d],e] = [1,2,[3],4,5];
// console.log(a,b,c,d,e);
2. 對象解構(gòu): {key:value,key:value,...}
// 對象的解構(gòu)
const zhao = {
name: '趙本山',
age: '不詳',
xiaopin: function() {
console.log("我可以演小品");
}
};
// let{name,age,xiaopin}=zhao;
// console.log(name);
// console.log(age);
// console.log(xiaopin);
// xiaopin();
// let{xiaopin,name,age}=zhao;
console.log(zhao.name, zhao.age);
zhao.xiaopin()
// xiaopin();
// console.log(name);
// 用途:
{
// 1. 快速交換變量的值
let arr = [33,7,19,99,0,5,13];
for (var i = 0; i < arr.length - 1; i++) {
for (var j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// var tmp = arr[j];
// arr[j] = arr[j + 1];
// arr[j + 1] = tmp;
[arr[j+1],arr[j]] = [arr[j],arr[j+1]];
}
}
}
console.log(arr);
}