如何在瀏覽器中使用es6的語法呢?
方法一:引入文件相關(guān)js文件
<script src="traceur.js"></script>
<script src="bootstrap.js"></script> //引導(dǎo)程序 --- 跟css的bootstrap無關(guān)
<script type="module">
//code 這里寫你的代碼
</script>
方法二:
在線編譯 測試 --- https://babeljs.io/repl/
注意:玩ES6的時候,用嚴(yán)格模式('use strict'),如果不出問題的情況下,不用加編譯,出問題再加。
1. 變量定義(let)和常量定義(const)
let 定義變量 (瀏覽器已經(jīng)支持),有塊級別作用域(只在本塊有用,不會影響其他的)
{
let a = 12;
}
alert(a); //不能用
應(yīng)用:可解決i值的問題。
let aBtn = document.getElementsByTagName('input');
for(let i = 0;i<aBtn.length;i++){
aBtn[i].onclick = function(){
alert(i); //點誰就彈幾
};
}
注意:let不能重復(fù)定義同一變量。
錯誤示例:
'use strict'
let a = 12;
let a = 5;
alert(a); //會報錯
定義常量(const)
const a = 'Tab';
alert(a);
1.不能重復(fù)定義
2.常量不能修改
2.字符串模板引擎(字符串拼接)
Es6的這種新的“字符串拼接”方法比較簡單,沒有繁瑣的加號和引號,只需要在所需要的字符串“邊界”加上``即可。(鍵盤 tab上面那個鍵 ${變量} 鍵盤 tab上面那個鍵)
var name = 'Datura';
var age = 18;
var sex = '其它';
var hobby = '敲代碼';
var str1 = `我是${name},今年${age}歲,性別${sex}的了,愛好${hobby}`; //注意此處有兩個“ `` ”
var str2 = '我是'+name+',今年'+age+'歲,性別'+sex+',愛好'+hobby+''; //這個是原來的寫法
alert(st1r);
3. 解構(gòu)賦值
就根據(jù)“對應(yīng)”賦值,請看以下幾個例子:
'use strict';
let a = 12;
let b = 5;
let c = 8;
//相當(dāng)于
let [a,b,c] = [12,5,8];
console.log(a,b,c); //12 5 8
json格式的賦值
let {a,b,c} = {a:12,b:5,c:8};
console.log(a,b,c); //12 5 8
//數(shù)組里面嵌套數(shù)組
let [a,[b,c],d] = [12,[1,3],8];
console.log(a,b,c,d); // 12 1 3 8
與順序無關(guān),與結(jié)構(gòu)有關(guān)(左右結(jié)構(gòu)一致):
let {a,b,c} = {b:5,a:12,c:8};
console.log(a,b,c); //12 5 8
應(yīng)用,我們現(xiàn)在利用jsonp獲取了一組數(shù)據(jù)
let json = {
q:"aaa",
p:false,
s:["aaa云主機","愛奇藝vip免費試用","啊aaaaaaaa視頻","aaaa","愛奇藝","aaa電池","工商銀行","aaai","aaa短信轟炸機"]
};
let {s,q} = json;
console.log(s,q); //s為那組數(shù)組的數(shù)據(jù),q為字符串a(chǎn)aa
解構(gòu)賦值的默認(rèn)值問題
let {time=1000,id=0} = {};
console.log(time,id); // 1000 0
4.神奇的“三個點”
我之前的文章曾提到過數(shù)組或者對象的深淺拷貝問題,今天我們就利用es6的三個點來處理下。
var arr = [12,5,8];
arr2 =arr;
arr2.pop();
alert(arr); // 12 5
上面的代碼就是arr2與arr公用一段內(nèi)存地址,所以導(dǎo)致srr2數(shù)據(jù)改變的時候arr也必然會變的。這就是淺拷貝。那么我們下面就簡單的說幾種深度復(fù)制數(shù)組方式。
方式一:利用for循環(huán)把原數(shù)組的每一項都遍歷,然后扔到新的數(shù)組中。
var arr = [12,5,8];
var arr2 =[];
for(var i = 0;i<arr.length;i++){
arr2.push(arr[i]);
}
arr2.pop();
alert(arr); // 12 5 8
方式二:利用Array.from(原數(shù)組);
var arr = [12,5,8];
var arr2 = Array.from(arr);
arr2.pop();
console.log(arr2); // 12 5
alert(arr); // 12 5 8
方式三:三個點
var arr = [12,5,8];
var arr2 = [...arr]
arr2.pop();
console.log(arr2);//12 5
alert(arr); //12 5 8
說了這么多,我們現(xiàn)在就說下“三個點”的應(yīng)用把,我們知道函數(shù)的參數(shù)是一個集合(arguments)并不是一個真正的數(shù)組。那么我們怎么才能在這個arguments中加一項呢??
function show(){
//因為類數(shù)組對象,并不具備數(shù)組的那些方法。所以此會報錯
arguments.push(8);
console.log(arguments);
}
show(12,5);
function show(...arr){
arr.push(8);
console.log(arr);
}
show(12,5); //12 5 8
當(dāng)然還有很多的對象深拷貝方式請參照(http://www.itdecent.cn/p/4e613af9509c),這里就不一一論述了。