前言
前端技術更新的實在是太快了,各種框架百花齊放,隨着NodeJs不斷的興起,各種構建工具也是層出不窮,這不,前兩周尤雨溪開源了Vue.js3.0源碼之后,很多大佬早已把源碼剖析皮都不剩了;昨天NodeJs13.0又發布了,真的是學學學不動了,不過既然選擇了程序員這條道路,就得時刻保持新技術的學習,ES2019(ES10)年初都發布了,但是項目中常用的還是ES6以及核心版本,所以還是有必須學習一下ES2019新特性的。
注:調試代碼瀏覽器版本: Google Chrome76.0.3809.132(64位)
1.Array.prototype flat
將多層級的數組平鋪成一個數組在項目開發中還是常用的,flat() 方法會按照一個可指定的深度遞歸遍歷數組,並將所有元素與遍歷到的子數組中的元素合並為一個新數組返回
語法
var newArray = arr.flat([depth])
參數
指定要提取嵌套數組的結構深度,默認值為1,當層級超過一層的情況下,用Infinity可以把多級數組平鋪為一個數組
返回值
一個包含將數組與子數組中所有元素的新數組
var arr=[1,2,[3,4,[5,6]]];
var arr2=arr.flat(); //[1, 2, 3, 4, [5, 6]]
var arr3=arr.flat(Infinity); //[1, 2, 3, 4, 5, 6]
2.String.prototype trimStart and trimEnd
js的String類型已經有trim()方法了,起作用時去除字符串前后空格
1.trimStart()方法從字符串的開頭刪除空格。trimLeft()是此方法的別名
返回值
一個新字符串,表示從其開頭(左端)除去空格的調用字符串
var str=" Hello world ";
var str1=str.trimStart(); //Hello world
var str2=str.trimLeft(); //Hello world
2.trimEnd()方法從一個字符串的末端移除空白字符。trimRight() 是這個方法的別名
返回值
一個新字符串,表示從調用字串的末(右)端除去空白
var str=" Hello world ";
var str1=str.trimEnd(); // Hello world
var str2=str.trimRight(); // Hello world
3.Object.fromEntries
Object.fromEntries是Object.entries的反向方法
Object.entries是將一個鍵值對對象,轉換為Array
Object.fromEntries是將Array或Map等對象,轉換為鍵值對對象
var arr=[
['name','tom'],
['age','18']
];
var arr1=Object.fromEntries(arr);
console.log(arr1);
// {name: "tom", age: "18"}
4.Function.prototype.toString
toString()方法返回一個表示當前函數源代碼的字符串
function sayHello(){
// say Hello
alert('hello');
}
console.log(sayHello.toString());
// 打印結果
function sayHello(){
// say Hello
alert('hello');
}
5.可選的catch綁定(Catch Binding)
之前使用try catch的時候,catch有個必須要寫的參數
try{
alert(msg);
}catch(err){
console.log(err);
}
// msg is not defined
現在catch后面不用寫參數,方便了一點
try{
// code
}catch{
//
}
6.JSON超集
此提議的動機是 JSON 字符串可以包含未轉義的 U + 2028 LINE SEPARATOR 和 U + 2029 PARAGRAPH SEPARATOR 字符,而 ECMAScript 字符串則不能。在 ES2019 之前,它會產生錯誤SyntaxError: Invalid or unexpected token
const LS = eval('"\u2028"');
const PS = eval("'\u2029'");
以上只列了幾個常用的ES2019新特性,並舉例加以說明,恰逢今天有事10月24號程序員節,那就祝大家節日快樂,技術節節高升吧。
參考資料:
MDN