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。...

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 樣板文字的指南

在 ES2015(也稱為 ES6)中引入的樣板文字提供了一種新的聲明字符串的方式,同時還提供了一些新的有趣的構造方法,並且已經被廣泛地使用。 樣板文字介紹 多行字符串 插值 樣板標籤 樣板文字介紹 樣板文字是 ES2015 / ES6 中的一個新功能,與 ES5 及其以下版本相比,它以一種新穎的方式處理字符串。 從外觀上看,語法非常簡單,只需使用反引號(`)而不是單引號或雙引號即可: const a_string = `something` 它們之所以獨一無二,是因為它們提供了很多普通字符串所不具備的功能,尤其是: 它們提供了一種很好的語法來定義多行字符串 它們提供了一種簡單的方式將變量和表達式插入字符串中 它們允許您使用樣板標籤創建特定領域的語言(DSL,即“domain specific language”),例如 React 中的 Styled Components 用於為組件定義 CSS 讓我們逐一詳細介紹這些功能。 多行字符串 在 ES6 之前,要創建跨兩行的字符串,您必須在行末使用反斜線字符(\): const string = 'first part \ second part' 這允許在兩行上創建字符串,但實際呈現在只有一行上: first part second part 要將字符串呈現為多行,您需要在每行末尾明確添加 \n,如下所示: const string = 'first line\n \ second line' 或者 const string = 'first line\n' + 'second line' 樣板文字使多行字符串變得更簡單。...

Object.assign()方法

在本篇文章中,我們將介紹JavaScript中的Object.assign()方法。 這個方法在ES2015中引入,它將一個或多個物件的可枚舉自身屬性複製到另一個物件中。 它的主要用途是創建一個對象的淺拷貝。 const copied = Object.assign({}, original) 由於是淺拷貝,值被複製,對象引用被複製(而不是對象本身),所以如果在原始對象上編輯一個對象屬性,則在複製的對象中也會修改,因為內部引用的對象是相同的: const original = { name: 'Fiesta', car: { color: 'blue' } } const copied = Object.assign({}, original) original.name = 'Focus' original.car.color = 'yellow' console.log(copied.name) // Fiesta console.log(copied.car.color) // yellow 我們提到了"一個或多個": const wisePerson = { isWise: true } const foolishPerson = { isFoolish: true } const wiseAndFoolishPerson = Object.assign({}, wisePerson, foolishPerson) console.log(wiseAndFoolishPerson) //{ isWise: true, isFoolish: true }

字串的 codePointAt() 方法

探索 JavaScript 字串的 codePointAt() 方法。 這個方法在 ES2015 中被引入,用於處理無法用一個 16 位元 Unicode 單元表示的 Unicode 字元,而需要使用兩個。 使用 charCodeAt() 你需要取得第一個和第二個單元,然後結合它們。使用 codePointAt() 可以在一次呼叫中取得整個字元。 舉個例子,這個中文字「𠮷」由兩個 UTF-16(Unicode)部分組成: "𠮷".charCodeAt(0).toString(16) //d842 "𠮷".charCodeAt(1).toString(16) //dfb7 如果你結合這兩個 Unicode 字元來建立一個新的字元: "\ud842\udfb7" //"𠮷" 你可以使用 codePointAt() 得到相同的結果: "𠮷".codePointAt(0) //20bb7 如果你結合這兩個 Unicode 字元來建立一個新的字元: "\u{20bb7}" //"𠮷" 想要了解更多關於 Unicode 及如何處理 Unicode 的相關資訊,可以參考Unicode and UTF-8。