ES12 中的 nullish 合并操作符为我们解决了什么问题?
介绍
在 JavaScript 中,当我们需要判断变量是否存在或者为空时,通常使用 || 运算符或者 && 运算符进行判断。然而,这种方式存在一定的弊端,即当变量的值为 0、false 或者空字符串时也会被认为是不存在或者为空。这就导致我们无法准确的判断变量的真实状态,而 ES12 中的 nullish 合并操作符为我们解决了这个问题。
nullish 合并操作符 (??) 与 || 或 && 的区别
在 ES12 中,我们可以使用 nullish 合并操作符 (??) 来判断变量是否为 null 或 undefined。nullish 合并操作符将在变量为 null 或 undefined 时,返回默认值;否则,返回变量的值。
下面是一个简单的代码示例:
// 使用 || 的方式 const exampleOne = "" || "default value"; // 返回 "default value" // 使用 ?? 的方式 const exampleTwo = "" ?? "default value"; // 返回 ""
从代码示例中可以看出,当变量的值为 "" 时,使用 || 返回的是默认值 "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