ES6 不是什么新語言喇肋,也不是新框架,它就是原生 JS司恳,
只不過是升過級(jí)的JS的一些寫法察署。
定義變量:
1.let:
特點(diǎn):
1)支持塊作用域
2)不允許在相同作用域重復(fù)定義
塊作用域:
{} let
以前: 函數(shù)作用域
2.const: 定義常量
常量: 一經(jīng)定義,以后不可以再改變
正是因?yàn)檫@個(gè)特性,要求常量在定義時(shí)朽砰,必須賦初始值,否則以后就沒機(jī)會(huì)了喉刘。
通常:約定瞧柔,常量的名字全用大寫字母
const PI = 3.14159265;
3.字符串:
let str = ; //反單引號(hào) 使用
來定義字符串的話,就可以用字符串模板: ${變量}
4.解構(gòu)賦值
//寫法1: √
var a = 10;
var b = 12;
var c = 20;
//寫法2: √
var a=10,b=12,c=20;
概念:賦值等號(hào) 左邊的結(jié)構(gòu)和右邊一模一樣睦裳。
[a,b,c] = [10,12,20]; //a = 10,b=12,c=20
[a,[b,e],c] = [100,[200,300],400];
[a,{f,g},d]=[12,{90,98},4] ×
[a,{f,g},d]=[12,{f:90,g:98},4] √
let [a,{f,g},d]=[12,{f=90,g=98},4]; ×
如果在解構(gòu)賦值時(shí)造锅,碰到j(luò)son格式,那么右邊必須是一個(gè)合法的json
并且廉邑,json中的每一項(xiàng)名字是一一對(duì)應(yīng)的备绽,和順序無關(guān)
應(yīng)用1:
用于函數(shù)的json參數(shù)初始化
function sum({a=0,b=0} = {}){
a++;
b++;
return a+b;
}
5.不定參數(shù)、擴(kuò)展參數(shù) ...
原來:arguments
現(xiàn)在: ...
...args 是一個(gè)真正的數(shù)組鬓催。
例1:代替arguments
function sum(...args)
例2:擴(kuò)展參數(shù)的作用
function sum(a,b,...agrs){
//args 除了a和b之外肺素,其它參數(shù)的一個(gè)數(shù)組
}
****...args 必須放在所有參數(shù)的最后
例3:復(fù)制數(shù)組
1)循環(huán)每一項(xiàng)來復(fù)制
2)var arr2 = [...arr1]; 不是引用
3)Array.from(arr1) //不兼容IE 不是引用
6.for - of 循環(huán)
for
while
for...in
for(var name of 要循環(huán)的東西){
}
要循環(huán)的東西,可以是數(shù)組宇驾,但是不能是json
for-of循環(huán)倍靡, 不能用于循環(huán)json
7、數(shù)據(jù)格式 map
數(shù)據(jù)格式:
1)普通變量 var a = 12;
2)數(shù)組 var arr = [11,22];
3)JSON var json = {name:1,age:2};
4)map
map: 和json非常像 的一種新的數(shù)據(jù)格式(鍵/值 對(duì))
1) 怎么弄一個(gè)map出來
map 是js中的一個(gè)對(duì)象
var map = new Map();
2) 增加內(nèi)容
map.set('key','value');
例:
var map = new Map();
map.set('name','小紅');
map.set('age',18);
3)獲取內(nèi)容
map.get('key');
例:
//建一個(gè)新對(duì)象
var map = new Map();
//設(shè)置值
map.set('name','小紅');
map.set('age',18);
//獲取值
map.get('name'); -- 小紅
4)刪除一項(xiàng)
map.delete('key');
用for-of循環(huán)课舍,來循環(huán)map
1) 普通循環(huán)
for(var item of map){
item -> 數(shù)組
item[0]是map中的key
item[1] -> map中的value
}
2)利用解構(gòu)賦值的形式
for(var [key,value] of map ){
alert(key);
alert(value);
}
3)循環(huán)map 的 entries()
for(let item of map.entries())
*默認(rèn)情況下就是循環(huán)的entries塌西,也就是說,如果不寫entries()筝尾,結(jié)果是一樣的
4)只想循環(huán)map中的key
for(var item of map.keys() )
只想循環(huán)map中的value
for(var item of map.values())
for-of循環(huán)數(shù)組 : entries() keys() values()
entries():
item -> [索引,值]
keys():
item -> 索引
values():
item -> 值
循環(huán)map對(duì)象時(shí):
map.entries()
map
以上兩種寫法是一個(gè)效果捡需,得到的都是map對(duì)象的每一個(gè)item,包括key和value筹淫,是一個(gè)數(shù)組形式
循環(huán)數(shù)組:
arr.entries()
得到的是數(shù)組中每一項(xiàng): [索引值,值]
arr.values() —— 報(bào)錯(cuò)站辉,不支持
arr.keys() —— 得到的就是數(shù)組的索引值
8.函數(shù)
原來:
function show(){...}
var show = new Function();
show();
show(a);
show(a,b);
現(xiàn)在:
箭頭函數(shù): =>
省略了function,加了一個(gè)箭頭=>
1:
function show(){
alert(1);
}
let show = () => {
alert(1);
};
2:
function show(a){alert(a);}
let show = (a)=>{
alert(a);
}
箭頭函數(shù)损姜,只是在函數(shù)定義時(shí)饰剥,寫法有區(qū)別,在調(diào)用的時(shí)候摧阅,和原來一樣汰蓉。
*箭頭函數(shù)里的this,固定化 自己沒有去外邊找 最大this是window
*箭頭函數(shù)里arguments不能用了
*當(dāng)參數(shù)正好有一個(gè)的時(shí)候棒卷,( ) 可以省略
*當(dāng)函數(shù)里面只有一句話顾孽,而且正好是return的時(shí)候祝钢,{ }和里面的return 可以省略
9.JSON 有了簡寫形式
當(dāng)json中的name和變量名一模一樣時(shí),可以簡寫為以下形式:
var a = 12;
var b = 18;
var json = {a:a,b:2};
json.a -> 12
json.b -> 18
var a = 12;
var b = 18;
var json = {a,b};