gpt4 book ai didi

javascript - 在 Javascript 中使用对象作为键时的奇怪行为

转载 作者:行者123 更新时间:2023-12-02 06:13:37 24 4
gpt4 key购买 nike

考虑以下片段:

var a = {amount: 300}
var b = {amount: 250}
var c = {[a] : 'bla', [b]: 'blabla'};
console.log(c[a]);

它打印:

blabla

但它不应该打印:

bla

这是怎么回事?

最佳答案

对象不能有其他对象作为它们的键。发生的事情是,由于 a 是一个无效键,它的 toString 方法被调用,从而将 a 转换为字符串。 [b] 也会发生同样的事情。所以,对于解释器来说,你正在做的实际上看起来像这样:

var a = {amount: 300}
var b = {amount: 250}
var c = {['object Object'] : 'bla', ['object Object']: 'blabla'};
console.log(c);

如果你想使用对象作为键,你应该使用 Map 代替:

var a = {amount: 300}
var b = {amount: 250}
var c = new Map()
.set(a, 'bla')
.set(b, 'blabla');
console.log(c.get(a));

( map 可以将任何东西作为它们的键)

关于javascript - 在 Javascript 中使用对象作为键时的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51530005/

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