gpt4 book ai didi

angular - *ngFor对象比较使用 '==='

转载 作者:搜寻专家 更新时间:2023-10-30 21:15:46 25 4
gpt4 key购买 nike

通过 Angular 教程(英雄之旅),我偶然发现了两个对象之间的比较。由于这不是一种常见的做法,我在类中尝试了多次比较,但都返回了 false,除非比较的是 hero[0]selectedHero,返回值为 true,假设我们为 selectedHero 分配了 hero[0]

发生比较的 Heores 部分代码之旅:Link to StackBlitz

<ul class="heroes">
<li *ngFor="let hero of heroes"
[class.selected]="hero === selectedHero"
(click)="onSelect(hero)">
<span class="badge">{{hero.id}}</span> {{hero.name}}
</li>
</ul>

为什么这个比较返回真值?这里到底在比较什么?我还没有找到任何解释。

最佳答案

=== 正在检查值(如果主题是数字或 bool 值)、类型和对象引用。如果您创建 2 个具有相同属性的对象,如下所示,它将返回 false:

let a = { test: 'test' };
let b = { test: 'test' };
console.log(a === b); // gives false

因为它不是同一个引用。因此,在您的情况下,如果您的 2 个对象具有相同的引用,则 selectedHero === hero 将为真。

编辑:

另一个精确是你可以在另一个中复制对象引用:

let a = { test: 'test' };
let b = a;
console.log(a === b); // gives true

然后,如果您更改其中一个引用的属性,那么两者都会更改:

let a = { test: 'test' };
let b = a;
a.test = 'foo';
console.log(b.test) // gives foo

关于angular - *ngFor对象比较使用 '===',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51321291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com