JS中鲜为人知的知识点-空值合并运算符(??)

网站建设4年前发布
134 0 0
20230306101417e966fae40c239087ea6250099eaa098de406dd948,与逻辑或操作符(||)不同,逻辑或操作符会在左侧操作数为假值时返回右侧操作数。也就是说,如果使用 || 来为某些变量设置默认值,可能会遇到意料之外的行为。比如为假值(例如,'' 或 0)时。见下面的例子。,在这个例子中,我们使用空值合并操作符为常量提供默认值,保证常量不为 null 或者 undefined。,以前,如果想为一个变量赋默认值,通常的做法是使用逻辑或操作符(||):,然而,由于 || 是一个布尔逻辑运算符,左侧的操作数会被强制转换成布尔值用于求值。任何假值(0, '', NaN, null, undefined)都不会被返回。这导致如果你使用0,''或NaN作为有效值,就会出现不可预料的后果。,空值合并操作符可以避免这种陷阱,其只在第一个操作数为null 或 undefined 时(而不是其它假值)返回第二个操作数:,与 OR 和 AND 逻辑操作符相似,当左表达式不为 null 或 undefined 时,不会对右表达式进行求值。,将 ?? 直接与 AND(&&)和 OR(||)操作符组合使用是不可取的。(译者注:应当是因为空值合并操作符和其他逻辑操作符之间的运算优先级/运算顺序是未定义的)这种情况下会抛出 SyntaxError 。,但是,如果使用括号来显式表明运算优先级,是没有问题的:
,空值合并操作符针对 undefined 与 null 这两个值,可选链式操作符(?.) 也是如此。在这访问属性可能为 undefined 与 null 的对象时,可选链式操作符非常有用。,2023030610141802bd1c9429ac6850aa99579283cb00669d703d782
© 版权声明

相关文章