在 JavaScript 中,我们经常会遇到需要判断一个变量是否为 null 或 undefined 的情况。在过去,我们通常使用 || 运算符来实现这个目的,例如:
const foo = null || 'default value'; console.log(foo); // 'default value'
但是,这种方式存在一个问题。如果变量的值为 false、0 或者空字符串等 falsy 值,那么这种判断方式就会出现错误。例如:
const bar = false || 'default value'; console.log(bar); // 'default value'
在这种情况下,我们会得到错误的结果。为了解决这个问题,ES11 引入了一个新的运算符:双问号运算符(??)。
双问号运算符的作用
双问号运算符的作用是判断一个变量是否为 null 或 undefined,如果是,则返回一个默认值。如果不是,则返回变量本身的值。
例如,下面的代码使用双问号运算符来实现这个目的:
const baz = null ?? 'default value'; console.log(baz); // 'default value' const qux = false ?? 'default value'; console.log(qux); // false
在这个例子中,我们可以看到双问号运算符的作用。当变量的值为 null 或 undefined 时,它会返回一个默认值。否则,它会返回变量本身的值。
双问号运算符的优先级
双问号运算符的优先级比 || 运算符低,但是比大部分运算符都要高。因此,在使用双问号运算符时,我们需要注意优先级的问题。
例如,下面的代码演示了优先级的问题:
const a = null || undefined ?? 'default value'; console.log(a); // 报错 const b = (null || undefined) ?? 'default value'; console.log(b); // 'default value' const c = null ?? undefined || 'default value'; console.log(c); // undefined
在这个例子中,我们可以看到,由于优先级的问题,第一行代码会报错。因此,在使用双问号运算符时,我们需要注意优先级的问题,避免出现错误的情况。
双问号运算符的指导意义
双问号运算符的引入,使得我们在判断一个变量是否为 null 或 undefined 时变得更加方便和准确。它不仅可以避免与 falsy 值混淆的问题,还可以避免代码中出现大量的判断语句,使得代码更加简洁和易读。
另外,双问号运算符的引入也反映了 JavaScript 社区对语言的不断改进和优化,使得我们在编写代码时能够更加高效和舒适。
总结
本文介绍了 ES11 中的双问号运算符,包括它的作用、优先级以及指导意义。双问号运算符的引入,使得我们在编写 JavaScript 代码时更加方便和准确,同时也反映了 JavaScript 社区对语言的不断改进和优化。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6602a351d10417a222e7c1f4