ES2017指南

ECMAScript是JavaScript的基礎標準,通常縮寫為ES。了解有關ECMAScript的所有內容,以及ES2017(也稱為ES8)中加入的功能。 字串填充 Object.values() Object.entries() getOwnPropertyDescriptors() 這有什麼用處? 尾部逗號 Async函式 它們的好處 快速示例 連續使用多個Async函式 共享內存和原子操作 ECMAScript 2017是ECMA-262標準的第8版(也常簡稱為ES2017或ES8),於2017年6月定案。 與ES6相比,ES8針對JavaScript來說是一個很小的更新,但它仍然引入了非常有用的功能: 字串填充 Object.values() Object.entries() Object.getOwnPropertyDescriptors() 函式參數列表和呼叫中的尾部逗號 Async函式 共享內存和原子操作 字串填充 字串填充的目的是將字符添加到字串中,使其達到特定長度。 ES2017引入了兩個String方法:padStart()和padEnd()。 padStart(targetLength [, padString]) padEnd(targetLength [, padString]) 範例用法: padStart() ‘test’.padStart(4) ‘test’ ‘test’.padStart(5) ’ test’ ‘test’.padStart(8) ’ test’ ‘test’.padStart(8, ‘abcd’) ‘abcdtest’ padEnd() ‘test’.padEnd(4) ‘test’ ‘test’.padEnd(5) ‘test ’ ‘test’.padEnd(8) ‘test ’ ‘test’.padEnd(8, ‘abcd’) ‘testabcd’ Object.values() 此方法返回包含所有對象自有屬性值的陣列。 用法: const person = { name: 'Fred', age: 87 } Object.values(person) // ['Fred', 87] Object....

如何解決 JavaScript 中的「is not a function」錯誤

我在寫 JavaScript 時不加分號。 而這個我真的很喜歡。在我看來,這樣子語言更加清晰。 你可能不喜歡這樣,這是可以理解的。但這就是事實。 分號是可選的,我們沒有必要加上它們。 然而,有時我們必須要特別注意。尤其在 Node.js 中,我們使用 require() 來載入外部模組和檔案。 這可能會導致某些情況下出現以下錯誤: TypeError: require(...) is not a function 這是一個奇怪的錯誤,對吧? 讓我們看看我是如何遇到這個錯誤的。 我載入了一個函式庫,然後我要在根層級執行一些程式碼,並且我建立了一個立即調用的異步函式: const fs = require('fs') (async () => { //... })() JS 在 require() 後面看不到分號,然後我們以 ( 開頭一行,JS 以為我們要執行一個函式。 它將 require('fs') 視為函式的名稱,如果該模組導出返回了一個函式,這實際上是可以正常工作的。 但實際上並不是這樣,所以我們得到了 ...is not a function 的錯誤。 我們該如何解決這個問題呢? 我們需要加上一個分號。隨便哪都可以。 這個方法能有效解決問題: const fs = require('fs') ;(async () => { //... })() 另外這個方法也能正常工作: const fs = require('fs'); (async () => { //... })() 這是我們必須付出的一點小代價,為了避免到處使用分號。...