ES9 中!(not) 和?(optional chaining) 运算法的优雅应用

阅读时长 3 分钟读完

随着 Javascript 语言的不断发展和更新,ES9 新增了两种运算符,! 和 ?,它们的语义和应用使得代码更加优雅和简洁。

not 运算符

! 运算符在 Javascript 中一直都存在,其作用是将一个值转为布尔型并取反。在 ES9 中,它新增了一项功能,即可以用在对象的属性上,用于判断属性是否存在。

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

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

以上代码,我们通过 ! 运算符来判断对象 obj 中的属性是否存在。如果属性存在,则取反后为 false,反之则为 true。

optional chaining 运算符

在开发过程中,我们经常会遇到深度嵌套的对象或数组,访问其内部属性或元素时非常不方便,甚至容易出错。而 ? 运算符的出现,很好的解决了这个问题。

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

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

以上代码,我们通过 ? 运算符对嵌套式对象进行访问。如果访问的属性存在,则返回该属性值,否则返回 undefined。这让我们在访问深度嵌套的对象时更加方便和安全。

应用示例

优雅的处理对象取值

在使用 ES9 的 ? 运算符之前,我们通常都使用 if ... else ... 的方式来判断对象的属性是否存在,而这样的代码通常是冗长和重复的。使用 ? 运算符后,代码更加简洁。

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

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

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

以上代码,在传统写法中,我们需要使用 if 判断 obj 对象中的属性是否存在,而在 ES9 写法中,则直接使用 ? 运算符就能够实现对嵌套对象的访问。在不存在该属性时,可以通过 ?? 运算符来返回默认值。

优雅的判断变量真值

在开发过程中,我们通常需要判断一个变量的真假值,传统的判断方式可以使用 if ... else ... 的方式,但代码不够简洁。使用 ! 运算符可以写出更加简洁的代码。

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

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

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

以上代码,在传统写法中,我们需要使用 if 判断变量是否是 undefined、null 或空字符串,而在 ES9 写法中,则可以直接使用 ! 运算符将变量转为布尔型并判断真假值。在判断数值时,可以使用 != null 的方式,它可以判断除了 undefined 以外的所有 falsy 值。

总结

ES9 新增的 ! 和 ? 运算符为我们的代码编写带来许多方便和简洁。在实际编写代码时,可以根据实际情况应用到业务上,提高代码的可读性和维护性。

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

纠错
反馈