ECMAScript 2015-2019 完全指南

ECMAScript 是 JavaScript 的基礎標準,通常簡稱為 ES。探索有關 ECMAScript 及其最新功能的所有內容。 TC39 是什麼? ES 版本 ES Next 無論你在哪裡讀到關於 JavaScript 的內容,你總會看到這些術語之一: ES3 ES5 ES6 ES7 ES8 ES2015 ES2016 ES2017 ECMAScript 2015 ECMAScript 2016 ECMAScript 2017 ECMAScript 2018 ECMAScript 2019 這些代表什麼意思呢? 它們都指的是 ECMAScript 這個標準。 ECMAScript 是JavaScript 的基礎標準,通常簡稱為 ES。 除了 JavaScript,其他的語言也實現了 ECMAScript,包括: ActionScript(Flash 腳本語言),由於 Flash 將於 2020 年正式停用,因此其受歡迎程度不斷下降。 JScript(微軟腳本方言),由於當時只有 Netscape 支援 JavaScript,網路瀏覽器戰爭正如火如荼進行中,微軟不得不為 Internet Explorer 建立自己的版本。 但當然最受歡迎和廣泛使用的 ECMAScript 實現是 JavaScript。 為什麼會有這個奇怪的名字?Ecma 国际是一家位於瑞士的標準協會,負責制定國際標準。 當 JavaScript 誕生時,由 Netscape 和 Sun Microsystems 提交給 Ecma,並被命名為 ECMA-262,別名為 ECMAScript。...

ES2018指南

ECMAScript是JavaScript所基於的標準,通常被簡稱為ES。了解有關ECMAScript的所有信息,以及ES2018(也稱為ES9)中新增的功能。 Rest/Spread 屬性 異步迭代 Promise.prototype.finally() 正則表達式改進 RegExp 正向匹配斷言:基於前置字符進行匹配 Unicode 屬性逸脫\p{…} 和\P{…} 命名捕獲組 正則表達式的s標記 ES2018是ECMAScript標準的最新版本。 它引入了哪些新功能? Rest/Spread 屬性 ES6在處理數組解構時引入了“rest”元素的概念: const numbers = [1, 2, 3, 4, 5] [first, second, ...others] = numbers 以及spread元素: const numbers = [1, 2, 3, 4, 5] const sum = (a, b, c, d, e) => a + b + c + d + e const sumOfNumbers = sum(...numbers) ES2018引入了同樣功能,但針對對象。 Rest 屬性: const { first, second, ...others } = { first: 1, second: 2, third: 3, fourth: 4, fifth: 5 } first // 1 second // 2 others // { third: 3, fourth: 4, fifth: 5 } Spread 屬性允許通過結合在spread運算符之後傳遞的對象的屬性來創建新對象:...

JavaScript 函数参数

学习 JavaScript 函数参数的基础知识。 函数可以接受一个或多个参数。 const dosomething = () => { //做些事情 } const dosomethingElse = foo => { //做些事情 } const dosomethingElseAgain = (foo, bar) => { //做些事情 } 从 ES6/ES2015 开始,函数的参数可以有默认值: const dosomething = (foo = 1, bar = 'hey') => { //做些事情 } 这样你就可以在调用函数时不填充所有参数: dosomething(3) dosomething() ES2018 引入了参数的尾随逗号,这个特性有助于减少由于移动参数导致的缺少逗号而引起的 bug(例如,将最后一个参数移动到中间时): const dosomething = (foo = 1, bar = 'hey',) => { //做些事情 } dosomething(2, 'ho!') 在最后一个参数后面加上逗号来调用函数也是可以的: dosomething(2, 'ho!',) 你可以将所有参数包装在数组中,并在调用函数时使用 扩展运算符:...

JavaScript 展開運算子

學習 JavaScript 的展開運算子基礎知識 你可以使用展開運算子 ... 來擴展陣列、物件或字串。 首先從陣列的例子開始。給定 const a = [1, 2, 3] 你可以使用以下方式來建立一個新陣列 const b = [...a, 4, 5, 6] 你也可以使用以下方式來複製一個陣列 const c = [...a] 這對物件也同樣適用。你可以使用以下方式來克隆一個物件 const newObj = { ...oldObj } 使用字串時,展開運算子會將字串中的每個字元創建一個陣列 const hey = 'hey' const arrayized = [...hey] // ['h', 'e', 'y'] 這個運算子有一些非常有用的應用。其中最重要的應用之一是能夠非常簡單地將陣列作為函式參數使用 const f = (foo, bar) => {} const a = [1, 2] f(...a) 在處理陣列解構賦值時,rest 元素非常有用 const numbers = [1, 2, 3, 4, 5] const [first, second, ....