什么是Javascript ?。运算符?

问题描述 投票:0回答:1

我为自己创建并回答此问题,因为谷歌搜索“ Javascript?。运算符”没有提供有用的结果。

关于?的问题。要回答的运算符:

  1. 此运算符叫什么?
  2. 操作员如何工作?
  3. 打字稿是否支持此运算符?
javascript operators
1个回答
0
投票
  1. 这是Null传播运算符(A.K.A.存在运算符)
  2. 当必须访问中间属性可能为空/未定义的对象的深层嵌套的正确值时,此运算符很有用。

例如,考虑此Perosn对象

let person = {
  name : {
     first : "John",
     last : "Doe"
  },
  age : 31
}

我将使用此人的姓氏作为别名

let lastName = person.name.last;

这很盛大,但是如果名称对象不存在怎么办?那么代码的前行会抛出以下错误

未捕获的TypeError:无法读取未定义的属性'last'

要解决此问题,必须检查name属性以确保它存在。这会将我们简单的一个班轮变成以下代码

let lastName;
if(person.name){
 lastName = person.name.last;
}

let lastName = person && person.name && person.name.last

第一个选项只是一个麻烦而第二个选项也不是很膨胀(我个人认为语法令人困惑。)作为一种解释,第二个选项是检查person是否为真,它将检查person是否为真。名称是真实的,如果是person.name.last将被保存到lastName中。

所以这是Null传播运算符的魔力,我可以将上述所有代码片段都重写为

let lastName = person?.name?.last

现在,如果person或name为null / undefined,lastName将设置为null / undefined,并且不会引发任何错误。对于高度嵌套的对象,这可以节省很多错误检查和代码行。

  1. 从技术上讲,这只是建议的ES7更改(https://github.com/tc39/proposal-optional-chaining,但是如果您在任何Chrome浏览器的控制台中尝试过,都可以使用。

Typescript从3.7开始支持光学链接https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#optional-chaining

© www.soinside.com 2019 - 2024. All rights reserved.