有啥作用?。和 ?? javascript中的操作符是做啥的? [复制]

Posted

技术标签:

【中文标题】有啥作用?。和 ?? javascript中的操作符是做啥的? [复制]【英文标题】:What does ?. and ?? operator in javascript do? [duplicate]有什么作用?。和 ?? javascript中的操作符是做什么的? [复制] 【发布时间】:2020-04-26 19:39:45 【问题描述】:

我最近在 java 脚本代码库中注意到这样的用法,它的作用是什么。我找不到任何相关文件。尽管直觉上操作员似乎在检查属性是否存在。有没有这方面的官方文档。

例如:

args?.propertyName !== 'someValue'
const value = props.someProp ?? props.defaultProp;

【问题讨论】:

***.com/questions/48341869/… ?. 指的是可选链。 这能回答你的问题吗? Is it possible to check for null inline in javascript? 【参考方案1】:

它们是可选的:

val ?? other 称为空值合并运算符,等效于val == null ? other : val

optionalThing?.property 被称为可选链接,与optionalThing == null ? null : optionalThing.property 相同

当存在引用可能丢失的可能性时(允许您执行optionalThing?.optionalProperty?.anotherOptionalProperty?.property 之类的操作),当访问链接属性时,此可选链接表达式会产生更短和更简单的表达式。

【讨论】:

【参考方案2】:

?. 称为可选链接运算符 (TC39 Stage 4),当您不确定嵌套属性是否存在时使用。如果您尝试使用. 运算符来访问undefined 的属性,您会得到TypeError

例如:

const obj = foo:  ;

//This is safe, results in undefined
console.log(obj?.foo?.bar?.baz);

//This results in Uncaught TypeError: Cannot read property 'baz' of undefined
console.log(obj.foo.bar.baz);

?? 被称为空合并运算符 (TC39 Stage 3)。当您使用空字符串"" 或带有|| 运算符的0 等虚假值时,|| 右侧的操作数将被返回,因为虚假值被忽略。

?? 当您不想要它并且实际上您想考虑虚假值时会派上用场。如果左侧的值为nullundefined,则仅采用?? 右侧的值:

例如:

const empString = "";
const defaultValue = empString || "A default value";
//Outputs A default value as "" empty string is falsy
console.log(defaultValue);

const actualValue = empString ?? "A default value";
//Does not print the default value as the empString is neither null or undefined
console.log(actualValue);

0false 等其他虚假值相同,与将输出'default 字符串的|| 运算符不一致:

console.log(false ?? 'default') //false

console.log(0 ?? 'default') // 0

仅适用于undefinednull,这将输出与|| 运算符一致提供的默认值:

console.log(undefined ?? 'default') //default

console.log(null ?? 'default') //default

【讨论】:

以上是关于有啥作用?。和 ?? javascript中的操作符是做啥的? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 多行注释中的“@”符号有啥作用?

javascript 的 src 属性中的 `//` 有啥作用? [复制]

JavaScript 表达式中的逗号有啥作用?

ES6 javascript 中的 at 符号 (@) 有啥作用? (ECMAScript 2015)

jquery是啥 在网站中有啥作用

jquery是啥 在网站中有啥作用