ES12 中的 nullish 合并操作符为我们解决了什么问题?

ES12 中的 nullish 合并操作符为我们解决了什么问题?

介绍

在 JavaScript 中,当我们需要判断变量是否存在或者为空时,通常使用 || 运算符或者 && 运算符进行判断。然而,这种方式存在一定的弊端,即当变量的值为 0、false 或者空字符串时也会被认为是不存在或者为空。这就导致我们无法准确的判断变量的真实状态,而 ES12 中的 nullish 合并操作符为我们解决了这个问题。

nullish 合并操作符 (??) 与 || 或 && 的区别

在 ES12 中,我们可以使用 nullish 合并操作符 (??) 来判断变量是否为 null 或 undefined。nullish 合并操作符将在变量为 null 或 undefined 时,返回默认值;否则,返回变量的值。

下面是一个简单的代码示例:

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

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

从代码示例中可以看出,当变量的值为 "" 时,使用 || 返回的是默认值 "default value",而使用 ?? 则返回的是变量的实际值 ""。

另外,值的类型也是两种方式之间的区别。当变量的值为 false、0 或空字符串时,使用 || 或 && 判断时会被认为是不为真,而使用 ?? 则会返回变量的实际值。

下面是一个更复杂的代码示例:

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

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

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

从代码示例中可以看出,在使用 || 或 && 运算符时,空字符串、0 或者 false 也都会被当作 false,所以最后都返回了默认值 "default value"。而在使用 ?? 运算符时,null 或 undefined 才会被认为是不存在或者为空,所以返回的值就是空字符串 ""。

应用与指导意义

JavaScript 是一门动态类型的语言,类型判断比较灵活,但是有时会增加代码的复杂性。使用 nullish 值的运算符 ?? 不仅可以减少我们对变量真实状态的判断,还可以使代码更加直观和易读,并且兼容之前的版本以及其他语言也有相似实现提供更好的易用性。

结论

总之, nullish 合并操作符(??) 解决了许多我们在 JavaScript 中判断变量是否为 null 或 undefined 所面临的问题,使代码更加简洁、易读并且兼容旧版本的 JavaScript。进行合适使用nullish 可以提高代码的质量和效率。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/672f10faeedcc8a97c8c5717