ES11(也称为ES2020)是JavaScript中一个重要的新版本,它为开发人员提供了一些新的功能和特性。在本文中,我们将会介绍 ES11 中的两个新特性:空值合并运算符和忽略大量空格的 JSON.parse()。
空值合并运算符
空值合并运算符(??)是一个新的二元运算符,它可以将左边的操作数和右边的操作数进行比较,如果左边的操作数是null或undefined,就返回右边的操作数,否则返回左边的操作数。
下面是一个使用空值合并运算符的例子:
const foo = null ?? 'default value'; // 'default value' const bar = 'hello' ?? 'default value'; // 'hello'
在上面的例子中,foo 变量的值是null,所以使用空值合并运算符时,返回了右边的默认值。而 bar 变量的值不是null或undefined,所以返回了左边的值。
空值合并运算符可以用于简化代码,特别是在处理对象与对象属性时特别有用。例如,当我们需要访问嵌套在对象中的属性时,我们经常需要使用if-else语句来检查每个级别的属性是否存在。这时,空值合并运算符可以大大简化代码:
const user = { name: 'Tom', address: { city: 'Beijing', }, }; const country = user.address?.country ?? 'unknown'; // 'unknown'
在上面的例子中,我们使用了空值合并运算符(?:)来检查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