返回

用新的眼光剖析 ES2021 的顶尖 5 个特性

前端

感谢您邀请我撰写关于 JavaScript ES2021 新特性的文章。接下来,让我们对 5 个最值得期待的特性进行深入解析。

    ### 特性 1:全局 This

    全局 This 是 JavaScript 中的新提案功能,允许您直接访问全局对象,而无需使用 `window` 或 `self`。这使得代码更加简洁和易于阅读。

    例如,在 ES2021 之前,如果您想获取当前 URL,您需要使用以下代码:

    ```
    const url = window.location.href;
    ```

    但是,在 ES2021 中,您可以使用以下代码:

    ```
    const url = globalThis.location.href;
    ```

    ### 特性 2:Nullish 合并操作符

    Nullish 合并操作符 (`??`) 是另一个新提案功能,允许您检查一个值是否为 `null` 或 `undefined`。如果值为 `null` 或 `undefined`,则返回右侧的值;否则,返回左侧的值。

    例如,在 ES2021 之前,如果您想检查一个变量是否为 `null` 或 `undefined`,您需要使用以下代码:

    ```
    if (variable === null || variable === undefined) {
      // Do something
    }
    ```

    但是,在 ES2021 中,您可以使用以下代码:

    ```
    const value = variable ?? "Default value";
    ```

    ### 特性 3:可选链

    可选链 (`?.`) 是一个新的操作符,允许您访问对象的属性,即使该属性不存在。如果属性不存在,则返回 `undefined`。

    例如,在 ES2021 之前,如果您想检查一个对象是否具有某个属性,您需要使用以下代码:

    ```
    if (object.hasOwnProperty("property")) {
      // Do something
    }
    ```

    但是,在 ES2021 中,您可以使用以下代码:

    ```
    const value = object?.property;
    ```

    ### 特性 4:静态属性

    静态属性是类的新类型属性,在类实例化之前就可以访问。这使得您可以创建全局变量,而无需实例化类。

    例如,在 ES2021 之前,如果您想创建一个全局变量,您需要使用以下代码:

    ```
    const variable = 1;
    ```

    但是,在 ES2021 中,您可以使用以下代码:

    ```
    class MyClass {
      static variable = 1;
    }
    ```

    ### 特性 5:私有字段

    私有字段是类的新类型字段,只能在类内部访问。这使得您可以创建私有数据,而无需使用闭包或其他技术。

    例如,在 ES2021 之前,如果您想创建私有数据,您需要使用以下代码:

    ```
    class MyClass {
      constructor() {
        const _privateData = 1;
      }

      get privateData() {
        return _privateData;
      }

      set privateData(value) {
        _privateData = value;
      }
    }
    ```

    但是,在 ES2021 中,您可以使用以下代码:

    ```
    class MyClass {
      #privateData = 1;
    }
    ```

    我希望这篇文章能帮助您更好地理解 JavaScript ES2021 的新特性。如果您有任何问题,请随时与我联系。