之间的确切区别是什么?和?:角运算符

时间:2019-02-21 20:35:34

标签: angular typescript

我没有考虑?:(三元运算符)。有时我在YouTube教程中观看人们在HTML页面中使用?。运算符,有时在TS(typescript)页面中使用?:的情况。我不清楚它们到底有什么不同?

2 个答案:

答案 0 :(得分:3)

所以使用?时有区别。在Angular中,您可能会参考这三种用法。

安全操作员

在HTML中设置带有问号的值时,这是安全的检查,因此在访问变量之前先检查其是否已定义。 (尝试使用不存在的访问值将导致错误)。

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

<p>{{example?.text}}</p>

这可以确保一切安全,以了解有关安全运算符的更多信息,并通读Angular文档found here

可选参数

我认为您正在寻找的下一个用途是函数/接口中的可选值。这意味着如果接口没有被exampleValue调用,则不会引发错误,因为接口现已被定义为可选。

export interface Itest
{
 exampleValue?: string; // optional
 neededValue: string; // non-optional
}

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

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的简短文章

条件(三元)运算符

问题不是寻找这个问题,而是认为将其弹出是另一种可以看到?的情况。

在打字稿中看到时,您可以像这样在条件三元语句(if / else)中使用它。

const example = 'hello';
console.log(example === 'hello' ? 'im true' : 'im false');

这与编写以下语句相同。

    const example = "hello";
    
    if (example === 'hello')
    {
      console.log('im true');
    }else 
    {
      console.log('im false');
    }

更多信息和条件(三元)运算符的用法here.

答案 1 :(得分:1)

.div-right-1{ background-attachment:fixed background-color: yellow; height: 100%; width: 50%; margin: 0px; float: right; } safe-navigation operator。它只是简单地做到这一点,因此,如果先前的值为null,则不会引发任何错误。有一些细节,但基本上可以将其视为一个用于空值检查的三元表达式。

?.

...与以下内容大致相同:

<div>{{item?.value}}</div>