我是在目前最新的3.7.0上测试的,有这么一段代码,很简单,找一个Set是否是另一个Set的子集:
export function isSubSet(childSet: Set<unknown>, parentSet: Set<unknown>) {
let result = [...childSet].every(o => parentSet.has(o));
console.log('set', JSON.stringify(Array.from(childSet)), '是 set', JSON.stringify(Array.from(parentSet)), '的子集吗?', `${result ? '是' : '否'}`);
return result;
}
其实只有一行,我发现很迷惑就加了一堆log。
这段代码在编辑器直接运行是正常的,可以正确找出前面是后面的子集。但是只要发布出来。就永远返回false。
自然的,我怀疑[…childSet]那里的事。
那到底是为什么会造成运行差异呢?
另一段测试在Edge里面:

我改成这个就行了:
let result = Array.from(childSet).every(o => parentSet.has(o));
不理解。
