可选链操作符
可选链操作符(?.):允许开发者在访问对象的属性或调用方法时,安全地处理null或undefined值,以防止抛出错误。这个操作符的语法形式是?.,它可以代替传统的访问操作符.。
【应用场景】
-
访问对象属性:当不确定某个属性是否存在时,可以使用可选链安全地访问它。如果属性不存在,则表达式会短路返回
undefined,而不会抛出错误。 -
访问数组元素:当不确定数组或数组元素是否存在时,同样可以使用可选链来安全地访问数组元素。
-
调用方法:当尝试调用一个可能不存在的方法时,也可以使用可选链。如果方法不存在,则表达式会返回
undefined,而不是抛出一个异常。
【例】假设有一个可能不存在的对象parentForm,我们想要检查它的status属性是否等于1,可以使用可选链操作符来安全地访问status属性:
if (parentForm?.status === 1) {
// 如果parentForm存在且status属性等于1,则执行这里的代码
}
在这个例子中,如果parentForm是null或undefined,则parentForm?.status会立即返回undefined,而不会抛出错误。然后,undefined === 1的结果为false,因此if语句内的代码不会执行。这样就实现了对parentForm对象及其status属性的安全访问。
空值合并运算符
空值合并运算符(??):用于为可能是null或undefined的表达式提供一个默认值,当你尝试从一个可能是null或undefined的变量中获取值时,空值合并运算符会检查这个变量的值。如果这个变量的值是null或undefined,那么运算符会返回它右边的值作为默认值。否则,它会返回变量本身的值。
【例】
const foo = null ?? 'default string';
console.log(foo); // 输出: "default string"
const bar = false ?? 'default string';
console.log(bar); // 输出: false(因为false不是null或undefined,所以返回bar本身的值)
const baz = 0 ?? 42;
console.log(baz); // 输出: 0(因为0不是null或undefined,所以返回baz本身的值)
const qux = undefined ?? 'default string';
console.log(qux); // 输出: "default string"

1780

被折叠的 条评论
为什么被折叠?



