Airbnb JavaScript Style 閱讀注解

EdmQff 6年前發布 | 32K 次閱讀 JavaScript開發 JavaScript

Airbnb JavaScript Style 閱讀注解

提供一種合理的javascript的規范,對原文主要內容進行翻譯,同時對部分內容進行注釋

注意 :本文假定你正在使用 Babel ,并且要求你使用 babel-preset-airbnb 或者其替代品。同時,假定你已經通過 airbnb-browser-shims 或者其替代品安裝 shims/polyfills 在你的app內。

如果您想了解更多或者在github上觀閱內容:point_down:

Types(數據類型)

  • 簡單的基本數據類型,直接使用其值

    • string
    • number
    • boolean
    • null
    • undefined
    • symbol</pre> </li> </ul>
      const foo = 1;
      let bar = foo;
      bar = 9;
      console.log(foo, bar); // => 1, 9
      • 復雜的基本數據類型,直接使用其值的引用

      • object
      • array
      • function</pre> </li> </ul>
        const foo = [1, 2];
        const bar = foo;
        bar[0] = 9;
        console.log(foo[0], bar[0]); // => 9, 9

        symbol

        • Symbol

        symbol 自ES6引入,目的是提供一種機制,保證每個屬性名都是唯一的,從根本上防止屬性名的沖突。在這之前,對象屬性名都是字符串。其實看到這里, string 和 symbol 類型有點 class 和 id 的意思

        Symbol() 的聲明,因為 Symbol() 返回值是一個類似于字符串的基本類型,不是一個對象,所以不能使用 new 命令

        let ylone = Symbol();
        typeof(ylone);
        :point_down:
        "symbol"

      //為聲明加上描述 let ylone1 = Symbol('hello'); ylone1; :point_down: Symbol(hello);</pre>

      無論是不加描述,還是所加的描述相同, Symbol() 函數的返回值都不相同

      Symbol.for('key') 也會返回一個Symbol,但是 Symbol.for() 采用登記機制(會被登記在 全局環境 中供搜索),如果之前 key 已經存在,則直接返回該值,否則新建一個值。比如,如果你調用 Symbol.for("cat") 30 次,每次都會返回同一個Symbol值,但是調用 Symbol("cat") 30 次,會返回 30 個不同的Symbol值。

      Symbol 本身不能與其他值進行運算,但是可以轉換成字符串和布爾類型

      對象中使用 Symbol() 。通過對比之前通過 a['string'] 的方式,相當于多了一步轉換,來保證屬性命名的安全。

      let mySymbol = Symbol();
      // 第一種寫法
      let a = {};
      a[mySymbol] = 'Hello!';

      // 第二種寫法 let a = {

      [mySymbol]: 'Hello!'
      

      };

      // 第三種寫法 let a = {}; Object.defineProperty(a, mySymbol, { value: 'Hello!' });

      a[mySymbol] :point_down: 'hello!'</pre>

      注意,由于 . 運算符后面總是字符串,所以 Symbol() 不支持點式聲明對象屬性。在對象內部使用 [symbol] 這樣的寫法也是這個道理

      References(引用)

 本文由用戶 EdmQff 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!