ES11 新特性学习笔记: 空值合并运算符和忽略大量空格的 JSON.parse()

阅读时长 4 分钟读完

ES11(也称为ES2020)是JavaScript中一个重要的新版本,它为开发人员提供了一些新的功能和特性。在本文中,我们将会介绍 ES11 中的两个新特性:空值合并运算符和忽略大量空格的 JSON.parse()。

空值合并运算符

空值合并运算符(??)是一个新的二元运算符,它可以将左边的操作数和右边的操作数进行比较,如果左边的操作数是null或undefined,就返回右边的操作数,否则返回左边的操作数。

下面是一个使用空值合并运算符的例子:

在上面的例子中,foo 变量的值是null,所以使用空值合并运算符时,返回了右边的默认值。而 bar 变量的值不是null或undefined,所以返回了左边的值。

空值合并运算符可以用于简化代码,特别是在处理对象与对象属性时特别有用。例如,当我们需要访问嵌套在对象中的属性时,我们经常需要使用if-else语句来检查每个级别的属性是否存在。这时,空值合并运算符可以大大简化代码:

在上面的例子中,我们使用了空值合并运算符(?:)来检查user对象是否有address属性,并且让country变量在address的country属性不存在时返回默认值。

忽略大量空格的 JSON.parse()

在以前的 JavaScript 版本中,当我们使用JSON.parse()方法将JSON字符串转换为对象时,字符串中的空格(包括换行符和制表符)必须与JSON规范中的空格完全匹配,否则将抛出语法错误。

ES11中,JSON.parse()方法更新了它的语法,使它可以忽略JSON字符串中的大量空格(包括制表符和换行符),使代码更加灵活。

下面是一个使用JSON.parse()方法忽略空格的例子:

-- -------------------- ---- -------
----- ------- - --
  ------- ------
  ------ ---
  ---------- -
    ------- ----------
    ---------- -------
  -
---

----- --- - ------------------- ----- ------ -- -
  -- ------- ----- --- --------- -
    ------ -------------
  -
  ------ ------
---

------------------------------ -- ---------

在上面的例子中,我们使用JSON.parse()方法将JSON字符串转换为对象,并使用第二个参数——解析器,它是一个回调函数。如果回调函数返回处理后的值,则 JSON.parse() 将使用该值代替原始值。

为了忽略字符串中的空格,我们在解析器中使用了一个trim()方法,该方法可以去掉字符串前后的空格。

总结

ES11中,空值合并运算符和忽略大量空格的 JSON.parse() 是JavaScript开发人员必须了解的两个新特性。使用空值合并运算符可以减少代码量,使代码更加简洁。而新的 JSON.parse()特性则提高了开发人员的工作效率,特别是在处理大型JSON字符串时,大大简化了代码。

示例代码

-- -------------------- ---- -------
-- ---------
----- --- - ---- -- -------- ------- -- -------- ------
----- --- - ------- -- -------- ------- -- -------

----- ---- - -
  ----- ------
  -------- -
    ----- ----------
  --
--

----- ------- - --------------------- -- ---------- -- ---------


-- -- ------------ ----
----- ------- - --
  ------- ------
  ------ ---
  ---------- -
    ------- ----------    
    ---------- -------
  -
---

----- --- - ------------------- ----- ------ -- -
  -- ------- ----- --- --------- -
    ------ -------------
  -
  ------ ------
---

------------------------------ -- ---------

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64fe911395b1f8cacdd50ad5

纠错
反馈