以前,這些符號在字串文字中被視為行終止符,因此使用它們會導致syntaxerror異常。
如果輸入 unicode 格式但是超出範圍的字元,在原先json.stringify返回格式錯誤的unicode字串。現在實現了乙個改變json.stringify的第3階段提案,因此它為其輸出轉義序列,使其成為有效unicode(並以utf-8表示)
flat()
和flatmap()
本質上就是是歸納(reduce) 與 合併(concat)的操作。
array.prototype.flat()
flat()
方法會按照乙個可指定的深度遞迴遍歷陣列,並將所有元素與遍歷到的子陣列中的元素合併為乙個新陣列返回。
var arr1 = [1, 2, [3, 4]];arr1.flat();
// [1, 2, 3, 4]
var arr2 = [1, 2, [3, 4, [5, 6]]];
arr2.flat();
// [1, 2, 3, 4, [5, 6]]
var arr3 = [1, 2, [3, 4, [5, 6]]];
arr3.flat(2);
// [1, 2, 3, 4, 5, 6]
//使用 infinity 作為深度,展開任意深度的巢狀陣列
arr3.flat(infinity);
// [1, 2, 3, 4, 5, 6]
array.prototype.flatmap()
flatmap()
方法首先使用對映函式對映每個元素,然後將結果壓縮成乙個新陣列。它與 map 和 深度值1的 flat 幾乎相同,但 flatmap 通常在合併成一種方法的效率稍微高一些。 這裡我們拿map方法與flatmap方法做乙個比較。
var arr1 = [1, 2, 3, 4];arr1.map(x => [x * 2]);
// [[2], [4], [6], [8]]
arr1.flatmap(x => [x * 2]);
// [2, 4, 6, 8]
// 只會將 flatmap 中的函式返回的陣列 「壓平」 一層
arr1.flatmap(x => [[x * 2]]);
// [[2], [4], [6], [8]]
新增的這兩個方法很好理解,分別去除字串首尾空白字元,這裡就不用例子說宣告了。
object.entries()
方法的作用是返回乙個給定物件自身可列舉屬性的鍵值對陣列,其排列與使用 for...in 迴圈遍歷該物件時返回的順序一致(區別在於 for-in 迴圈也列舉原型鏈中的屬性)。
而object.fromentries()
則是object.entries()
的反轉。
object.fromentries()
函式傳入乙個鍵值對的列表,並返回乙個帶有這些鍵值對的新物件。這個迭代引數應該是乙個能夠實現@iterator方法的的物件,返回乙個迭代器物件。它生成乙個具有兩個元素的類似陣列的物件,第乙個元素是將用作屬性鍵的值,第二個元素是與該屬性鍵關聯的值。
const sym = symbol('the description');
以前,訪問描述的唯一方法是將符號轉換為字串:
assert.equal(string(sym), 'symbol(the description)');
現在引入了getter symbol.prototype.description以直接訪問描述:
assert.equal(sym.description, 'the description');
matchall()
方法返回乙個包含所有匹配正規表示式及分組捕獲結果的迭代器。 在 matchall 出現之前,通過在迴圈中呼叫regexp.exec來獲取所有匹配項資訊(regexp需使用/g標誌:
const regexp = regexp('foo*','g');const str = 'table football, foosball';
while ((matches = regexp.exec(str)) !== null) . next starts at $.`);
// expected output: "found foo. next starts at 9."
// expected output: "found foo. next starts at 19."
}
如果使用matchall ,就可以不必使用while迴圈加exec方式(且正規表示式需使用/g標誌)。使用matchall 會得到乙個迭代器的返回值,配合 for...of, array spread, or array.from() 可以更方便實現功能:
const regexp = regexp('foo*','g');const str = 'table football, foosball';
let matches = str.matchall(regexp);
for (const match of matches)
// array [ "foo" ]
// array [ "foo" ]
// matches iterator is exhausted after the for..of iteration
// call matchall again to create a new iterator
matches = str.matchall(regexp);
array.from(matches, m => m[0]);
// array [ "foo", "foo" ]
function /* comment */ foo /* another comment */() {}// 之前不會列印注釋部分
console.log(foo.tostring()); // function foo(){}
// es2019 會把注釋一同列印
console.log(foo.tostring()); // function /* comment */ foo /* another comment */ (){}
// 箭頭函式
const bar /* comment */ = /* another comment */ () => {};
console.log(bar.tostring()); // () => {}
在 es10 之前,我們必須通過語法為 catch 子句繫結異常變數,無論是否有必要。很多時候 catch 塊是多餘的。 es10 提案使我們能夠簡單的把變數省略掉。
不算大的改動。
之前是
try {} catch(e) {}
現在是
try {} catch {}
現在的基本資料型別(值型別)不止5種(es6之後是六種)了哦!加上bigint一共有七種基本資料型別,分別是: string、number、boolean、null、undefined、symbol、bigint
es6 定義靜態類 ES6中類的靜態方法有哪些作用
以前看過的es6的東西,又忘了,再總結下 類相當於例項的原型,所有在類中定義的方法,都會被例項繼承。如果在乙個方法前,加上static關鍵字,就表示該方法不會被例項繼承,而是直接通過類來呼叫,這就稱為 靜態方法 class foo static classmethod return hello fo...
dml有哪些mysql DDL與DML有哪些區別?
問 ddl與dml的區別有哪些?答 從嚴格意義上講,dml和ddl確實存在於sql之外,但我猜想你想問的是關於sql的元件。sql指的是結構化查詢語言。實際上,這真是名不副實。sql可以做到的遠不只是查詢資料。的確,語言明確地被分成了兩部分,分別是資料定義語言部分 ddl 和資料操作語言 dml 部...
有哪4種啟動模式 有哪些特點
今天遇到這個問題了,就去查了資料總結了一下希望對大家也能有所幫助!1.standard 預設模式 來了intent,每次都建立新的例項。2.singletop 來了intent,每次都建立新的例項,僅乙個例外 當棧頂的activity 恰恰就是該activity的例項 即需要建立的例項 時,不再建立...