问题标签 [safe-navigation-operator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1260 浏览

angular - 带有括号属性访问器的安全导航运算符

我遇到了无法使用点符号访问属性的情况,因为属性的名称包含一个点。

我有一个名为的对象translations,其属性包含字符串翻译,例如该Tooltip.O2属性包含图像工具提示的翻译:

当我这样做时,它认为我正在尝试使用属性访问内部的Tooltip对象。我知道我可以使用括号符号来访问它:translationsO2

但是,安全导航运算符似乎?不能与括号表示法一起使用。我试过写translations?['Tooltip.O2'],但它导致了错误。

我想知道是否有办法使用点符号访问属性,或者是否有办法使用带括号符号的安全导航运算符?

0 投票
0 回答
547 浏览

typescript - Angular2+安全导航算子?

我使用 angular2+ 已经有一段时间了,我发现“安全导航运算符”是一种非常有用的语法,但现在我有一个问题,我是否可以编写通用服务或某事来处理“空”的事情而不是写“ ?.' 到处。

0 投票
1 回答
50 浏览

groovy - 是否有任何理由在构造函数上使用安全导航运算符?

我的一个朋友给我发了以下代码:

在构造函数之后是否有任何理由使用?.运算符?据我了解,构造函数既可以返回一个新对象,也可以抛出一个异常,因此永远不会有null.

0 投票
2 回答
153 浏览

c# - 为什么空条件运算符会更改常规属性访问?

我对空条件运算符如何与普通属性访问级联感到困惑。举两个例子:

我希望它们是等效的:首先,a?.b评估 的值,然后result.c评估。因此,如果a == null,应该抛出异常。

但是,这只发生在第二个表达式中。第一个表达式的计算结果为null,这意味着它与 相同a?.b?.c为什么?

0 投票
2 回答
211 浏览

angular - 在模板中访问 Observable 而无需每次都使用 Safe Navigation Operator 和 Async Pipe

我是 Angular 的新手,并且在 rxjs 和所有正在发生的异步事情上有点挣扎。

一些背景

假设您有一个像 facebook 这样的网站,其中包含个人资料。您可以通过导航至 来访问个人资料website.com/profiles/profileUrl。同样,当单击配置文件时,您会得到路由到profiles/:profileUrlAngular 术语。

这是如何实施的?

我路由到PersonProfileComponent并从后端检索配置文件数据,两者都基于profileUrl

组件

模板

问题

虽然一切正常,但我确实不喜欢模板“”中的大部分内容(person | async)?.profileUrl。person 对象可以变得非常大,具有许多属性,我无法想象像这样访问每个属性。就是感觉不对。在仍然使用异步管道的同时有没有办法解决这个问题,因为它会为我处理所有订阅和取消订阅?此外,我感谢任何关于此代码段以及如何更好地实施它的批评!

0 投票
1 回答
2137 浏览

ruby - 带有字符串键的哈希的安全导航运算符

我有个问题:

如何将安全导航运算符&.用于带有字符串键的散列?密钥转换将由 [原文如此] 强制性?

0 投票
0 回答
252 浏览

angular - 安全导航操作员在 Angular 2+ 中的性能是否存在缺陷

众所周知,在初始化绑定之前首先会触发 ngOnChanges。因此,在表达式中添加安全导航运算符是很常见的。

但我想这种方法是否对性能有缺点。那么下面的代码会更快吗?

item?.特别是对于模板中有许多检查的组件。

0 投票
1 回答
476 浏览

c# - 可以使用 C# 安全导航运算符 (?.) 来检查 Object 是否为 null 以及属性吗?

这主要是一个语法糖/最佳实践问题。

这是一个有问题的代码示例:

我知道如果 _instanceData 为空,安全导航运算符将继续执行,但在这种情况下,条件中的第一个布尔值是否会按预期进行评估?这会成功地对 _instanceData 和 DataSourceType 进行空检查吗?

另一个例子:

在这种情况下,_instanceData 可能为空,也可能不是,但 ObjInfo 为空。仅对对象和属性进行老式的空值检查是更好的做法,还是可以按预期完成工作?

编辑:这个问题更好地描述为:if (obj?.prop != null)相当于 if (obj != null && obj.prop != null)

0 投票
1 回答
107 浏览

angular - 如果我在 Angular 中初始化对象,为什么需要安全导航运算符 (Elvis)

Angular 8,Django 3。我Restaurant在视图中显示一个对象RestaurantViewRestaurantView获取方法Restaurant:_ngOnInit

然后显示在 html 文件<h1>{{restaurant.name}}</h1>中。如果我没有将 Elvis 运算符放在 html 文件中,因为<h1>{{restaurant?.name}}</h1>视图正确显示,但我收到控制台错误property "name" not defined。我不明白如果在初始化RestaurantView时返回一个Restaurant对象,为什么我会得到这个空错误。

0 投票
1 回答
275 浏览

angular - 我应该在哪里使用 Angular 中的安全导航(猫王运算符,“?”)?

毫无疑问,我们在字符串插值 ( {{}}) 中使用安全导航来安全地导航嵌套对象中的值,并检查空值或未定义。我有一个问题,是否可以将安全导航也用于:

  1. ngIf
  2. ngFor
  3. ngModel
  4. ngClass
  5. 和其他 html 属性绑定,如[disabled],[style]等。

我应该使用哪些场景而不应该使用哪些场景?