Javascript 6里的4個新語法
JS 的 ES6版本已經(jīng)被各大瀏覽器廣泛支持,很多前端框架也已經(jīng)使用 ES6,并且還有 Babel 可以做兼容處理,所以ES6已經(jīng)進(jìn)入了應(yīng)用階段
如果您對 ES6 還不太熟悉,下面4個簡單的基礎(chǔ)用法可以幫助您快速了解ES6
1.使用 let 和 const 聲明變量
在傳統(tǒng)的 ES5 代碼中,變量的聲明有兩個主要問題
(1)缺少塊兒作用域的支持
(2)不能聲明常量
ES6中,這兩個問題被解決了,增加了兩個新的關(guān)鍵字:let 和 const
塊兒作用域使用 let
var a = 1; if (true) { var b = 2; } console.log(a); // 1 console.log(b); // 2
ES5 中 if 塊兒內(nèi)聲明的變量 b 可以在塊兒外訪問
// in ES6 let a = 1; if (true) { let b = 2; } console.log(a); // 1 console.log(b); // ReferenceError: b is not defined
ES6 中 if 塊兒內(nèi)使用 let 聲明的變量 b 不能在塊兒外訪問
下面這段代碼是常見的一個比較迷惑人的情況
var a = []; for (var i=0; i< 5; i++) { a.push(function() { console.log(i); }); } a.forEach(function(value) { value(); });
運(yùn)行結(jié)果是:5, 5, 5, 5, 5
使用 let 聲明循環(huán)中的變量 i
var b = []; for ( let i=0; i< 5; i++) { b.push(function() { console.log(i); }); } b.forEach(function(value) { value(); });
運(yùn)行結(jié)果是:0, 1, 2, 3, 4
定義常量使用 const
// in ES5 var MY_CONSTANT = true; MY_CONSTANT = false;
ES5 中不能定義常量,值可以被改,只能靠我們自己來保證
// in ES6 const MY_CONSTANT = true; MY_CONSTANT = false; // Uncaught TypeError: Assignment to constant variable
ES6 中使用 const 聲明的常量是不可以被改的
2.模板字符串
下面這種字符串與變量的拼接方式是比較常見的
var url = ‘http://www.' + domain + ‘.com/' + path + ‘?' + queryParams;
ES6 提供了簡潔的用法
let url = `http://www.${domain}.com/${path}?${queryParams}`;
3.新的 Set 和 Map 對象
ES5 中我們經(jīng)常使用數(shù)組來存儲動態(tài)數(shù)據(jù),例如
var collection = []; collection.push(1, 2, 1); console.log(collection); // [ 1, 2, 1]
其中包含了重復(fù)數(shù)據(jù),如果不想有重復(fù)數(shù)據(jù),需要使用代碼判斷
function addToCollection(collection, value) { if (collection.indexOf(value) < 0) { collection.push(value) } }
ES6 提供了 Set 對象,處理這個情況就方便多了
let collection = new Set(); collection.add(1); collection.add(2); collection.add(1); console.log(collection); // Set {1, 2}
Set 還可以方便的遍歷集合,和處理集合中的數(shù)據(jù)
ES5 中通常使用 object 來存儲鍵值對數(shù)據(jù),例如
var collection = {}; collection.a = ‘a(chǎn)bc'; collection.b = ‘xyz';
ES6 有了 Map,就可以這樣使用
let collection = new Map(); collection.set(‘a(chǎn)', ‘a(chǎn)bc'); collection.set(‘b', ‘xyz');
遍歷也很簡單
collection.forEach(function(value, key) { console.log(key + ":" + value); }); console.log(collection.size);
4.函數(shù)參數(shù)
ES6 中函數(shù)的參數(shù)有兩個新特性
默認(rèn)值
function doSomething(someObject) { console.log(someObject); }
這里有可能會出現(xiàn)運(yùn)行時錯誤,需要驗(yàn)證參數(shù)
function doSomething(someObject) { if (someObject === undefined) { someObject = {}; } console.log(someObject); }
這類的驗(yàn)證代碼非常普遍,ES6 中可以給參數(shù)設(shè)置默認(rèn)值,就簡單了很多
function doSomething(someObject = {}) { console.log(someObject); }
對象解構(gòu)
我們常會把一個包含鍵值對的對象做為參數(shù)傳給某個函數(shù),然后在函數(shù)內(nèi)獲取對象的各個屬性
function doSomething(someObject) { var one = someObject.propOne; console.log(one); var two = someObject.propTwo; console.log(two); var three = someObject.propThree; console.log(three); }
ES6 可以讓我們直接在參數(shù)中解構(gòu)對象參數(shù)
function doSomething({ propOne, propTwo, propThree }) { console.log(propOne); console.log(propTwo); console.log(propThree); }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
innerHTML,outerHTML,innerText,outerText的用法及區(qū)別解析
本篇主要是對innerHTML,outerHTML,innerText,outerText的用法及區(qū)別進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-12-12JavaScript實(shí)現(xiàn)網(wǎng)頁跨年倒計時
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)網(wǎng)頁跨年倒計時,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-12-12JS之判斷是否為對象或數(shù)組的幾種方式總結(jié)
這篇文章主要介紹了JS之判斷是否為對象或數(shù)組的幾種方式總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04