Javascript 是什么?操作员?
What is the Javascript ?. Operator?
我正在为自己创建和回答这个问题,因为谷歌搜索 "Javascript ?. Operator" 没有提供任何有用的结果。
关于 ? 的问题。要回答的运营商:
- 这个运算符叫什么?
- 接线员如何工作?
- 打字稿支持这个运算符吗?
- 这是空传播运算符(A.K.A。存在运算符)。使用运算符称为可选或条件链接。
- 当必须访问中间属性可能是 null/undefined.
的对象的深度嵌套正确值时,此运算符很有用
例如考虑这个人物对象
let person = {
name : {
first : "John",
last : "Doe"
},
age : 31
}
我会访问此人的姓氏
let lastName = person.name.last;
这一切都很好,但是如果名称对象不存在怎么办?那么前面的代码行会抛出以下错误
Uncaught TypeError: Cannot read property 'last' of undefined
要解决此问题,必须检查名称 属性 以确保它存在。这会将我们简单的一行变成下面的代码
let lastName;
if(person.name){
lastName = person.name.last;
}
或
let lastName = person && person.name && person.name.last
第一个选项比较麻烦,第二个选项也不大。 (我个人认为语法很混乱)为了解释第二个选项是检查人是否真实如果是,它将检查 person.name 是否真实,如果是 person.name.last 将被保存进入姓氏。
这就是 Null Propagation Operator 的神奇之处,我可以将上述所有代码片段重写为
let lastName = person?.name?.last
现在如果人或名字是 null/undefined lastName 将被设置为 null/undefined 并且不会抛出错误。对于高度嵌套的对象,这可以节省大量错误检查和代码行。
- 这在技术上只是提议的 ES7 更改 (https://github.com/tc39/proposal-optional-chaining),但如果您在任何 chromium 浏览器的控制台中尝试它,它就会起作用。
Typescript 从 3.7 开始支持可选链接
https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#optional-chaining
我正在为自己创建和回答这个问题,因为谷歌搜索 "Javascript ?. Operator" 没有提供任何有用的结果。
关于 ? 的问题。要回答的运营商:
- 这个运算符叫什么?
- 接线员如何工作?
- 打字稿支持这个运算符吗?
- 这是空传播运算符(A.K.A。存在运算符)。使用运算符称为可选或条件链接。
- 当必须访问中间属性可能是 null/undefined. 的对象的深度嵌套正确值时,此运算符很有用
例如考虑这个人物对象
let person = {
name : {
first : "John",
last : "Doe"
},
age : 31
}
我会访问此人的姓氏
let lastName = person.name.last;
这一切都很好,但是如果名称对象不存在怎么办?那么前面的代码行会抛出以下错误
Uncaught TypeError: Cannot read property 'last' of undefined
要解决此问题,必须检查名称 属性 以确保它存在。这会将我们简单的一行变成下面的代码
let lastName;
if(person.name){
lastName = person.name.last;
}
或
let lastName = person && person.name && person.name.last
第一个选项比较麻烦,第二个选项也不大。 (我个人认为语法很混乱)为了解释第二个选项是检查人是否真实如果是,它将检查 person.name 是否真实,如果是 person.name.last 将被保存进入姓氏。
这就是 Null Propagation Operator 的神奇之处,我可以将上述所有代码片段重写为
let lastName = person?.name?.last
现在如果人或名字是 null/undefined lastName 将被设置为 null/undefined 并且不会抛出错误。对于高度嵌套的对象,这可以节省大量错误检查和代码行。
- 这在技术上只是提议的 ES7 更改 (https://github.com/tc39/proposal-optional-chaining),但如果您在任何 chromium 浏览器的控制台中尝试它,它就会起作用。
Typescript 从 3.7 开始支持可选链接 https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#optional-chaining