我正在开发Arrow库,其中我正在创建一个仅返回类型为Symbol
的元素的函数。
我在数组上使用filter
函数:
export const extractSymbol = array => {
if (isArray(array)) {
return array.filter(value => typeof value === "symbol")
}
}
因为我是在实现之前创建测试,所以这个测试失败了:
expect(extractSymbol([1, 2, 4, Symbol('vue'), Symbol('react')])).toStrictEqual([Symbol('vue'), Symbol('react')]);
我预期的结果是true,但实际返回的是:
Expected: [Symbol(vue), Symbol(react)]
Received: serializes to the same string
[Symbol('vue')], [Symbol('vue')]
,你调用了Symbol
两次,所以这些符号是不同的(彼此不相等)。但是用const s = Symbol('vue'); compare([s], [s])
,你只调用了Symbol
一次,所以创建的一个符号等于它自己。 - CertainPerformance{} !== {}
,但是const obj = {}; obj === obj
。 - CertainPerformance