es6的介紹
ECMAScript 6(以下簡稱ES6)是JavaScript語言的下一代標準,組件分為:ECMA/DOM/BOM
ECMAscript簡寫是ECMA或者叫ES糠排;
在線編譯e6轉(zhuǎn)換es5
如果不是太熟悉的話眉抬,可以用用這個轉(zhuǎn)換的小工具屋吨,對比一下es6語法的差別;
http://babeljs.io/repl/#?babili=false&evaluate=true&lineWrap=false&presets=es2015%2Creact%2Cstage-2&code=%20const%20A%20%3D%20'static%20A'%3B%0D%0A%09%20%20%20%09%20console.log(A)%3B%0D%0A%09%20%20%20%09%20let%20b%20%3D'b'%3B%0D%0A%09%20%20%20%09%20console.log(b)%3B%0D%0A%0D%0A%09%20%20%20%09%20alert(A)
變量let
1.let的使用范圍有限票渠,只能在代碼里面使用,在代碼外面的還就會彈出未定義,不能重復(fù)聲明逮刨,也就是用同一個變量不能用兩次
2.如果是var的話贪壳,只有在函數(shù)里才有作用域
eg:
#html:
<ul>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
</ul>
#js:
window.onload = function(){
var ali = document.getElementsByTagName('li');
for(let i = 0;i<ali.length;i++){
ali[i].onclick = function(){
alert(i)
}
}
}
const
const的用法比較好理解,它一旦被賦值的話就不能被修改椒楣,常量必須在聲明的同時賦值给郊,否則會報錯,而且通常常量用大寫字母規(guī)范捧灰;和es5一樣的一點是淆九,不能重復(fù)的去聲明,否則是會有問題的毛俏;
eg:
const TEST1 = 0;
const TEST2 = 1;
字符串的連接
在es6中炭庙,字符串的連接變得更簡單了,(``)
,這個符號就好拧抖!
eg:
var a = "我是字符串1";
var b = "我是字符串2";
var c = `把他們連起來$(a)把他們連起來$(b)`;
console.log(c);
給變量賦值
現(xiàn)在的賦值更簡單煤搜,更靈活免绿,同時也減少的不少的代碼量唧席;
eg:
var [a,b,c] = [1,2,3];
打印一個:console.log(a);
打印多個:console.log(a,b,c);
對,就是這個樣嘲驾!
var { a, c ,b } = { a:1, b:2 , c:3 }
打印一個:console.log(a);
打印多個:console.log(a,b,c);
var [a,[b,c],d] = [1,[2,3],4];
console.log(a,b,c,d);
var [{a,e}},[b,c],d] = [{e:'eeee',a:'aaaaa'},[1,2],5] //這個有點變化淌哟,注意了
console.log(a,b,c,d)
自己會一一對應(yīng)的,不會因為順序不同導(dǎo)致值的變化辽故!
數(shù)組
數(shù)組的操作基本相同徒仓,這里介紹一個‘from’方法;‘復(fù)制數(shù)組’
var arr = [1,2,3];
var arr2 = Array.from(arr);
arr2.pop();
console.log(arr,arr2);
Array.from(arr);
var arr = [1,2,3];
var arr2 = [...arr];
arr2.pop();
console.log(arr,arr2);
這兩種方法是相同的誊垢;
遍歷
es6用的是for...of..;有點變化掉弛!
var arr = [1,2,2,2,2,2,2,3,4];
for(var i of arr){
console.log(i)
}
值得注意的是:可以循環(huán)數(shù)組,但是不能循環(huán)json喂走,他主要是循環(huán)map對象用的;
map
var map = new Map();
map.set('a','apple');
map.set('b','banbana');
alert(map.get('b')); //獲取
map.delete(‘a(chǎn)’); //刪除
var map = new Map();
map.set('a','apple');
map.set('b','banbana');
map.set('c','orange');
map.set('d','pear');
for( var [key,value] of map){ //循環(huán)了一下
console.log(value);
};
var arr = ['q','w','e','a','d','f','r'] //一套帶走殃饿,lol
//entries循環(huán)key和value
for(var name of arr.keys()){
console.log(name)
}
箭頭函數(shù)(經(jīng)常會遇到的,剛開始會很懵逼)
這里做個對比芋肠,就一目了然了乎芳;
es6 eg:
#html
<div id="box"></div>
#css
#box{
width:200px;
height:200px;
border:1px solid #000;
}
#js
window.onload = function(){
var oBox = document.getElementById('box');
oBox.onclick = () =>{
oBox.style.background = 'red';
}
}
es5 eg:
#html
<div id="box"></div>
#css
#box{
width:200px;
height:200px;
border:1px solid #000;
}
#js
window.onload = function(){
var oBox = document.getElementById('box');
oBox.onclick=function(){
oBox.style.background = 'red';
}
}
面向?qū)ο?/h1>
這個寫法奈惑,感覺和java里的類有點像吭净;
class Person{
constructor(name,age){
this.name = name
this.age = age
}
showName(){
return this.name;
}
showAge(){
return this.age;
}
}
var p1 = new Person('aaa',10);
alert(p1.showName());
小提示:在es6的語法當(dāng)中,私有作用域的代碼塊:{ }
包起來的就是代碼塊肴甸,就形成了一個作用域寂殉,稱為塊級作用域,這個的話和es5就有很大差別;