JS中频繁调用的函数初始化数组的效率
Efficiency of frequently called function initializing an array in JS
我有一些代码可以解析数百个对象(来自网络请求)。然后这段代码将调用一个函数来查看它是否匹配一个值。
I.E.
(1..100+){
isMatch(foo);
}
function isMatch(foo) {
const matches = ["apple", "orange", "strawberry"];
return matches.includes(foo);
}
我的问题是 JS 如何处理正在创建的 'matches' 数组。 isMatch 函数可能会被调用 100 多次。是每次都在内存中不断实例化这个数组,还是会自动缓存?或者,这真的不是内存的问题,因为数组的大小和GC?
此外,使用 array.includes 与使用正则表达式进行实际匹配有什么性能差异?
const
是 scoped to the function,因此一遍又一遍地创建和销毁。如果你有一个固定的列表,在更广泛的范围内声明它,或者直接在 isMatch
中引用它,或者将它作为参数传递,比如 isMatch(foo, LIST_OF_MATCHES)
我有一些代码可以解析数百个对象(来自网络请求)。然后这段代码将调用一个函数来查看它是否匹配一个值。
I.E.
(1..100+){
isMatch(foo);
}
function isMatch(foo) {
const matches = ["apple", "orange", "strawberry"];
return matches.includes(foo);
}
我的问题是 JS 如何处理正在创建的 'matches' 数组。 isMatch 函数可能会被调用 100 多次。是每次都在内存中不断实例化这个数组,还是会自动缓存?或者,这真的不是内存的问题,因为数组的大小和GC?
此外,使用 array.includes 与使用正则表达式进行实际匹配有什么性能差异?
const
是 scoped to the function,因此一遍又一遍地创建和销毁。如果你有一个固定的列表,在更广泛的范围内声明它,或者直接在 isMatch
中引用它,或者将它作为参数传递,比如 isMatch(foo, LIST_OF_MATCHES)