gpt4 book ai didi

javascript - JavaScript 映射 : TryGet wanted 中的双重搜索与未定义

转载 作者:搜寻专家 更新时间:2023-11-01 04:29:46 25 4
gpt4 key购买 nike

JavaScript map有两种方法 gethas .如果元素不存在,方法 get 返回 undefined 或者如果值 undefined 被添加到 map

所以如果我实现我的方法 GetAlways or such ,它将返回现有的或添加新的,如果不存在则返回,然后我坚持选择牺牲运行时性能进行双映射查找或牺牲 API 纯度将未定义等同于映射中不存在,从而有效地禁止安全添加未定义值到 map 。

有没有第三种高效纯粹的选择,类似TryGet from C#

不纯选择的代码:

Map.prototype.GetAlways = function(name){
let child = this.get(name);
if (child === undefined){ // equating undefined value to non-existence
child = {};
this.set(name, child);
}
return child;
}

慢速选择代码:

Map.prototype.GetAlways = function(name){
if(this.has(name)) // first map seek
return this.get(name); // second map seek
let child = {};
this.set(name, child);
return child;
}

最佳答案

undefined 表示缺少参数。唯一可以使用它的场合是检查参数是否丢失或函数是否返回任何内容。如果有人将 undefined 传递给您的 map ,发生的事情不是您的问题。

如果它困扰你,试着用 C++ 的思维方式来制作 JS:在你的文档中明确地写下你期望什么和你保证什么。这样您就不必浪费时间(和代码性能)测试那些错误的参数。这就是我们所说的关注点分离。

...所以我的答案是,不要试图允许在 map 中存储未定义的内容,但不要采取任何措施在代码中阻止它。忽略边缘情况并说不允许人们这样做。

关于javascript - JavaScript 映射 : TryGet wanted 中的双重搜索与未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40033906/

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