一、變量let和const
var:
可以重復聲明
可以進行變量提升(即將聲明提升到最前面)
let:
不可以重復聲明
塊級作用域
不可以變量提升
const:
不可以重復聲明
塊級作用域
聲明后不可以進行修改
聲明時必須初始化
const聲明的數(shù)組內容可以被修改雾袱,所以常規(guī)使用const進行數(shù)組變量的聲明
二、解構賦值
1.什么是解構挂捻?:es6允許按照一定的模式恩商,從數(shù)組和對象中提取值,對變量進行賦值振愿,這被稱為解構
2.數(shù)組解構賦值:
語法:
let [a,b,c] = [1,2,3];
console.log(a,b,c);
3.對象解構賦值:
語法:let{a,b} = {
? ? ? ? a:'aa',
? ? ? ? b:'bb'
};
console.log(a,b);
4.字符串的解構賦值:
語法: let[a,b,c,d] = 'hello';
console.log(a,b,c,d);//h e l l
5.函數(shù)的解構賦值:
function fun([x,y]){
console.log(x+y);
}
fun([1,2]);//實參
6.解構的用途:
交換變量的值
從函數(shù)返回多個值(這樣就可以快速調用一些數(shù)據(jù))
函數(shù)傳參
提取json數(shù)據(jù)(解構對提取json尤其有用)
函數(shù)參數(shù)默認值(es6允許函數(shù)的參數(shù)設置默認值)
7.函數(shù)默認初始值
一般用法:(直接將默認值寫在形參之后)
function fun(x,y ='world'){
? ? ? console.log(x,y);
}
與解構配合使用:
function fun({x,y=5}={}){
? ? ? console.log(x,y);
}
三毅糟、對象的簡化寫法
1.ES6允許在大括號里面放接,直接寫入變量和函數(shù),作為對象的屬性和方法在Vue中經常使用留特,這樣寫會使得編寫更加的簡潔纠脾!
四、箭頭函數(shù)
1.ES6允許使用「箭頭」(=>)定義函數(shù)
聲明函數(shù)的兩種方法:
let fn = function(){
}
let fn = (a,b) => {
return a+b;
}
2.this是靜態(tài)的蜕青,this始終指向函數(shù)聲明時所在作用域下的this的值
3.箭頭函數(shù)的this值是靜態(tài)的嫩与,始終指向函數(shù)聲明時所在作用域下的this的值
4.箭頭函數(shù)不能作為一個構造函數(shù)實例化對象跋破!
5.箭頭函數(shù)不能使用arguments變量
五、Symbol
Symbol是一種標識符,是一種類型鲤孵,表示獨一無二的值
1.Symbol簡介:
Symbol的值是唯一的歹叮,用來解決命名沖突的問題
Symbol的值不能與其他數(shù)據(jù)進行運算
Symbol定義的對象屬性不能使用for…in...進行循環(huán)遍歷,但是可以使用Reflect.ownKeys來獲取對象的所有鍵名
1.直接使用Symbol進行創(chuàng)建
2.使用Symbol.for進行創(chuàng)建
六、迭代器
1.for…in…:遍歷返回的是鍵名~~~for…of…:遍歷返回的是鍵值
2.迭代器的工作原理
創(chuàng)建一個指針對象宗兼,指向當前數(shù)據(jù)結構的起始位置
第一次調用對象的next方法,指針自動指向數(shù)據(jù)結構的第一個成員
接下來不斷使用next方法氮采,指針不斷向后移動直到指向最后一個數(shù)據(jù)成員
每調用一次方法返回一個包含value和done屬性的對象(done代表是否完殷绍,為一個布爾值,如果遍歷完成則為ture鹊漠,否則為false)
3.注意:要自定義遍歷數(shù)據(jù)的
時候主到,要想到迭代器!
七躯概、ES6模塊化
1.有助于處理各個模塊之間的沖突登钥,易于維護,易于修改
2.ES6之前的模塊化規(guī)范主要有:
1. CommonJS => NodeJS娶靡、Broeserify
2. AMD => requireJ
3. CMD => seaJS
3.模塊化功能主要由兩個命令構成:export和import
1)export命令用于規(guī)定模塊的對外接口
2)import命令用于輸入其他模塊提供的功能
八牧牢、瀏覽器使用模塊化的兩種方式
1、使用import引入
2姿锭、建立一個入口文件然后僅直接引入入口文件