es7與es8的一些知識

es7與es8的一些知識

es7的//求冪運算符 ** operator (求冪運算符)
console.log(2**3);
console.log(4**3);
console.log(Math.pow(2,3));
console.log(Math.pow(4,3));
Array.prototype.includes
let a = [1,2,3];
console.log(a.includes(5));
es8的字符串填充
函數的首個參數爲目標長度,即最終生成的字符串長度;第二個參數便是指定的填充字符串:
'es8'.padStart(2);          // 'es8'
'es8'.padStart(5);          // '  es8'
'es8'.padStart(6, 'woof');  // 'wooes8'
'es8'.padStart(14, 'wow');  // 'wowwowwowwoes8'
'es8'.padStart(7, '0');     // '0000es8'
'es8'.padEnd(2);          // 'es8'
'es8'.padEnd(5);          // 'es8  '
'es8'.padEnd(6, 'woof');  // 'es8woo'
'es8'.padEnd(14, 'wow');  // 'es8wowwowwowwo'
'es8'.padEnd(7, '6');     // 'es86666'
es8的關於對象
首個參數 obj 即爲須要遍歷的目標對象,它能夠爲某個對象或者數組(數組能夠看作鍵爲下標的對象):
const obj = { x: 'xxx', y: 1 };
Object.values(obj); // ['xxx', 1]

const obj = ['e', 's', '8']; // same as { 0: 'e', 1: 's', 2: '8' };
Object.values(obj); // ['e', 's', '8']

// when we use numeric keys, the values returned in a numerical 
// order according to the keys
const obj = { 10: 'xxx', 1: 'yyy', 3: 'zzz' };
Object.values(obj); // ['yyy', 'zzz', 'xxx']
Object.values('es8'); // ['e', 's', '8']
es8的關於函數
ES8 中容許使用 async/await 語法來定義與執行異步函數,async 關鍵字會返回某個 AsyncFunction 對象;在內部實現中雖然異步函數與迭代器的實現原理相似,可是其並不會被轉化爲迭代器函數:
function fetchTextByPromise() {
  return new Promise(resolve => { 
    setTimeout(() => { 
      resolve("es8");
    }, 2000);
  });
}
async function sayHello() { 
  const externalFetchedText = await fetchTextByPromise();
  console.log(`Hello, ${externalFetchedText}`); // Hello, es8
}
sayHello();

console.log(1);
sayHello();
console.log(2);

// 調用結果
1 // immediately
2 // immediately
Hello, es8 // after 2 seconds
相關文章
相關標籤/搜索