我有一些代码可以解析数百个对象(来自网络请求)。然后,此代码将调用函数以查看其是否与值匹配。



(1..100+){
    isMatch(foo);
}

function isMatch(foo) {
    const matches = ["apple", "orange", "strawberry"];
    return matches.includes(foo);
}


我的问题是JS如何处理正在创建的“匹配”数组。 isMatch函数可能被调用100次以上。它是否每次都在内存中不断实例化此数组,还是会自动对其进行缓存?还是因为阵列和GC的大小,这真的不是内存问题吗?

另外,使用array.includes和regex进行实际匹配之间是否存在性能差异?

最佳答案

constscoped to the function,因此一遍又一遍地被创建和销毁。如果您有固定列表,请在更广泛的范围内声明它,或者直接在isMatch中引用它,或者将其作为参数传递,例如isMatch(foo, LIST_OF_MATCHES)

09-19 19:42