在 JavaScript 中,我们常常需要进行变量类型的判断,并根据不同的情况采取不同的处理方式。然而,在进行类型判断时,我们常常会遇到一些痛点,例如当变量为 null 或者 undefined 时,我们需要使用 || 运算符来进行判断,但这种方式会导致一些不必要的问题。为了解决这种问题,ES11 中引入了 nullish coalescing 运算符。
nullish coalescing 运算符是什么?
nullish coalescing 运算符(??)是 ES11 中引入的一种新的运算符,它可以用来判断一个变量是否为 null 或者 undefined,并在变量为 null 或者 undefined 时返回一个默认值。与 || 运算符不同的是,nullish coalescing 运算符只会在变量为 null 或者 undefined 时返回默认值,而不会在变量为 falsy 值时返回默认值。
例如,当我们需要获取一个变量的值,但该变量可能为 null 或者 undefined 时,我们可以使用 nullish coalescing 运算符来获取变量的值:
----- --- - ----- ----- --- - ---------- ----- --- - -- --------------- -- ----------- -- ------- --------- --------------- -- ----------- -- ------- --------- --------------- -- ----------- -- ------- -
在上面的示例中,当 foo 和 bar 的值为 null 或者 undefined 时,nullish coalescing 运算符会返回默认值 'default';而当 baz 的值为 0 时,nullish coalescing 运算符会返回变量的值 0。
nullish coalescing 运算符的优势
相比于 || 运算符,nullish coalescing 运算符有以下几个优势:
只会在变量为 null 或者 undefined 时返回默认值,而不会在变量为 falsy 值时返回默认值,避免了一些不必要的问题。
可以使用默认值为 falsy 值的情况下,正确地获取变量的值。例如,当变量的值为 0 或者 '' 时,我们可以使用 nullish coalescing 运算符来获取变量的值,而不会返回默认值。
可以使用默认值为表达式的情况下,正确地获取变量的值。例如,当默认值为一个函数调用时,我们可以使用 nullish coalescing 运算符来获取函数的返回值,而不会返回默认值。
nullish coalescing 运算符的应用场景
nullish coalescing 运算符可以用来解决 JavaScript 中类型判断的一些痛点,例如:
获取变量的默认值。当我们需要获取一个变量的默认值,但该变量可能为 null 或者 undefined 时,可以使用 nullish coalescing 运算符来获取默认值。
获取函数的默认参数。当我们需要给函数设置默认参数,但默认参数可能为 null 或者 undefined 时,可以使用 nullish coalescing 运算符来设置默认参数。
例如,我们可以使用 nullish coalescing 运算符来获取一个对象中的属性值:
----- --- - - ---- ----- ---- ---------- ---- - -- ------------------- -- ----------- -- ------- --------- ------------------- -- ----------- -- ------- --------- ------------------- -- ----------- -- ------- -
我们也可以使用 nullish coalescing 运算符来给函数设置默认参数:
-------- -------------------- - ------- -------- - --------------------- - --------------- -- ------- ------- ------- ------------------- -- ------- ---- ------------------------ -- ------- ------- -------
在上面的示例中,当调用 printMessage 函数时不传入参数时,默认参数为 'Hello, world!';当传入 null 时,默认参数为 null;当传入 undefined 时,默认参数为 'Hello, world!'。
总结
nullish coalescing 运算符是 ES11 中引入的一种新的运算符,它可以用来判断一个变量是否为 null 或者 undefined,并在变量为 null 或者 undefined 时返回一个默认值。相比于 || 运算符,nullish coalescing 运算符具有更好的表现,可以避免一些不必要的问题,并可以应用于更多的场景中。在实际开发中,我们可以使用 nullish coalescing 运算符来简化代码,并提高代码的可读性和可维护性。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/65e536f11886fbafa40edb3e