發(fā)布于:2021-02-19 00:02:59
0
404
0
ES6為JavaScript開發(fā)人員帶來了大量令人興奮的新功能和語法更新。這些語言更新中的一些更新很大,但是如果不小心,您可能會錯過其中的一些小更新-這就是為什么我寫了《 六個小巧但很棒的ES6功能》這篇文章,列出了可以帶來很大不同的小事情當(dāng)您為當(dāng)今的瀏覽器編碼時。我想與您分享另外六個gem,您可以開始使用它們來減少代碼并最大化效率。
1.對象簡寫
新的對象創(chuàng)建速記語法允許開發(fā)人員在不定義鍵的情況下創(chuàng)建鍵=>值對象:var名稱成為鍵,而var的值成為新對象的值:
var x = 12;
var y = 'Yes!';
var z = { one: '1', two: '2' };
// The old way:
var obj = {
x: x,
y: y,
z: z
};
var obj = { x, y, z };
/*
{
x: 12,
y: "Yes!",
z: { one: '1', two: '2' }
}
*/
我無法告訴您以完全相同的方式手動編碼鍵=>值屬性的次數(shù)-現(xiàn)在我們只是有一種較短的方法來完成該任務(wù)。
2.方法屬性
當(dāng)涉及到這些ES6技巧時,似乎我很著迷于避免添加 function 關(guān)鍵字……我想這個技巧也沒有什么不同。無論如何,我們可以縮短對象函數(shù)的聲明,例如:
// Format: { myFn(param1) { ... } }
var davidwalsh = {
makeItHappen(param) {
/* do stuff */
}
}
您必須承認(rèn),省去所有function 關(guān)鍵字madness確實可以使代碼更簡潔,維護(hù)更少。
3.塊與立即執(zhí)行的功能
創(chuàng)建立即執(zhí)行功能的模式有點難看:
(function() {
/* do stuff */
})();
使用ES6,我們可以創(chuàng)建帶有Just的塊{},而使用let,我們可以在沒有所有括號的情況下立即執(zhí)行類似函數(shù)的行為:
{
let j = 12;
let divs = document.querySelectorAll('div');
/* do more stuff */}j; // ReferenceError: j is not defined...
如果在該塊內(nèi)聲明一個函數(shù),則該函數(shù)將泄漏出去,但如果保留為let,則實際上已創(chuàng)建了一個沒有括號的IEF。
4. for循環(huán)和let
由于JavaScript中存在變量提升功能,因此我們經(jīng)常在塊,代碼的頂部聲明“無用的”迭代器變量for(var x =...,或者最糟糕的是忘記執(zhí)行其中任何一個,從而泄漏了全局變量……只是通過該死的可迭代對象進(jìn)行迭代。ES6解決了此煩惱,使我們可以將其let 用作解決方法:
for(let x = 0; x <= elements.length; x++) {
console.log(x); // x increments
}
x; // ReferenceError: x is not defined
在不久的將來,我們將看到let 使用的次數(shù)更多甚至更多var。
5. get 和 set
作為MooTools團(tuán)隊的成員,在JavaScript類成為真正的事物之前,我是JavaScript類的忠實粉絲?,F(xiàn)在他們是一回事:
class Cart {
constructor(total) {
this._total = total;
}
get total() { return this._total; }
set total(v) { this._total = Number(v); }
get totalWithTax() { return parseInt(this._total * 1.1, 10); } /* 10% tax */
}
var cart = new Cart(100);
cart.totalWithTax === 110;
最好的部分是創(chuàng)建屬性的getter和setter的新功能!無需通過功能創(chuàng)建特殊設(shè)置-通過basic設(shè)置時,這些功能會自動執(zhí)行obj.prop = {value}。
6. startsWith,endsWith和includes
我們已經(jīng)在為自己的基本String函數(shù)編寫代碼了太久了-我記得在MooTools早期就這樣做了。的startsWith,endsWith和includes 字符串函數(shù)是這樣的函數(shù)的例子:
"MooTools".startsWith("Moo"); // true;
"MooTools".startsWith("moo"); // false;
"MooTools".endsWith("Tools"); // true;
"MooTools".includes("oo"); // true;
看到常識功能已成為一種語言,這令人難以置信。
ES6對于JavaScript來說是不可思議的飛躍。我在這篇文章中指出的技巧和先例將顯示即使最小的ES6更新也可以對可維護(hù)性產(chǎn)生很大的影響。我等不及要看下一輪JavaScript更新為我們提供了什么!