首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >两者的确切区别是什么?and ?:angular中的运算符

两者的确切区别是什么?and ?:angular中的运算符
EN

Stack Overflow用户
提问于 2019-02-22 04:35:34
回答 2查看 9.1K关注 0票数 8

我不是在想?:(三元运算符)。有时我在YouTube教程中看到,人们在HTML页面中使用?.运算符,有时在TS(typescript)页面中使用?:。我不太清楚它们到底有什么不同?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-22 04:41:41

所以在使用?在Angular中,这里有三种你可能会提到的用法。

safe-operators

当您在HTML中设置一个带有问号的值时,这是一种安全检查,因此您需要在访问变量之前检查变量是否已定义。(尝试访问不存在的值将导致错误)。

下面的代码片段将在检查文本之前检查this.example是否有值,这将导致错误。如果在未定义的情况下访问文本,这几乎可以确保不需要的行为。

代码语言:javascript
复制
<p>{{example?.text}}</p>

这保证了一切安全,要了解更多关于安全操作员的信息,请阅读Angular文档found here

可选参数

下一个用法是函数/接口中的可选值,我想这就是您要找的。这意味着如果在没有exampleValue的情况下调用该接口,它将不会抛出错误,因为它现在已被定义为可选的。

代码语言:javascript
复制
export interface Itest
{
 exampleValue?: string; // optional
 neededValue: string; // non-optional
}

或者在没有可选指示符(?)的函数内,如果函数被调用为like,则会发生错误。this.exampleFunction();

代码语言:javascript
复制
public exampleFunction(test?): void 
{
  console.log(test);
  // this function can be called with or without test being passed in without causing an error.
}

在这篇关于Optional Parameters的短文中可以找到更多这样的例子

条件(三元)运算符

这个问题并不是在寻找这个问题,而是认为将其弹出是有意义的,因为这是另一个可以看到?正在使用的情况。

当在typescript中看到它时,您可以将其用于条件三元语句(if / else)中,如下所示。

代码语言:javascript
复制
const example = 'hello';
console.log(example === 'hello' ? 'im true' : 'im false');

这将与编写以下语句相同。

代码语言:javascript
复制
    const example = "hello";
    
    if (example === 'hello')
    {
      console.log('im true');
    }else 
    {
      console.log('im false');
    }

有关条件(三元)运算符的更多信息和用法,请参阅here.

票数 14
EN

Stack Overflow用户

发布于 2019-02-22 04:48:43

?.是一个safe-navigation operator。它只是使它在前面的值为null时不会抛出错误。有一些具体的细节在起作用,但它基本上可以被认为是一个检查null的三元表达式。

代码语言:javascript
复制
<div>{{item?.value}}</div>

..。大致相同于:

代码语言:javascript
复制
<div>{{item ? item.value : null}}</div>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54815790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档