gpt4 book ai didi

javascript - 为什么在运行时 key 未知时我应该使用 Map()?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:42:10 25 4
gpt4 key购买 nike

Map 上的 MDN 文档说:

If you're still not sure which one to use [object or map], ask yourself the following questions:

  • Are keys usually unknown until run time, do you need to look them up dynamically?

  • [...]

Those all are signs that you want a Map for a collection. [...] https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Map

但我也可以使用方括号为对象动态设置键(即 myObject[dynamicKey])。

当我有动态键时使用 maps 是否还有其他原因,而不仅仅是为了“符合 map 目的”成为一个集合?

最佳答案

对任意键使用 Map 的原因是为了避免名称冲突。例如。使用普通对象:

let a = {};

function foo(key) {
console.log(a[key] === undefined ? "Unset" : "Set");
a[key] = "Hi";
console.log(a[key]);
console.log("" + a);
}

foo("goodKey"); // Unset, Hi, [object Object]
foo("toString"); // Set, Hi, TypeError: can't convert a to primitive type

上面我们与 Object.prototype.toString 发生了冲突。

使用 Map 我们没问题:

let a = new Map();

function foo(key) {
console.log(a.get(key) === undefined ? "Unset" : "Set");
a.set(key, "Hi");
console.log(a.get(key));
console.log("" + a);
}

foo("goodKey"); // Unset, Hi, [object Map]
foo("toString"); // Unset, Hi, [object Map]

关于javascript - 为什么在运行时 key 未知时我应该使用 Map()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41067835/

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