Javascript 如何在不被调用的情况下执行此函数

Javascript 如何在不被调用的情况下执行此函数,javascript,arrays,Javascript,Arrays,我对编程非常陌生。我不明白这个函数在没有被调用的情况下是如何执行的。我们在这里没有调用任何函数,但是我们收到了输出。这是怎么回事 let eightGb = phones.filter(function(item, i){ if(item.ram == '8gb') return item; }) console.log(eightGb) 该代码正在调用一个函数,它正在调用phones的方法,这可能是一个数组。(方法是函数。)filter方法依次为数组中的每个条目调用传

我对编程非常陌生。我不明白这个函数在没有被调用的情况下是如何执行的。我们在这里没有调用任何函数,但是我们收到了输出。这是怎么回事

let eightGb = phones.filter(function(item, i){
    if(item.ram == '8gb')
        return item;
})
console.log(eightGb)

该代码正在调用一个函数,它正在调用
phones
的方法,这可能是一个数组。(方法是函数。)
filter
方法依次为数组中的每个条目调用传递给它的函数(“回调”)
filter
生成一个新数组,该数组只包含回调为其返回truthy值的原始数组的条目。例如,如果
phones
中有12个项目,那么回调将被调用12次:每个项目调用一次。该代码正在构建一个新数组,其中只包含具有
ram==“8gb”
的项


有点旁注,但特定的代码有点误导,因为它返回
item
,而不是
true
过滤器
回调的返回值是一个标志。该回调可以这样编写:

let eightGb = phones.filter(function(item) {
    return item.ram == '8gb';
});
console.log(eightGb);
或作为一个简明的参数:


你说的是
函数(item,i){
filter
调用它。嘿@Arpit7,如果你翻阅一本书来掌握基本知识,这会对你有很大的好处。网上还有大量优秀的免费内容(例如)。祝你好运。不要使用w3schools,它的覆盖面很广但很浅,有时甚至不正确。是一个协作编辑、无广告、备受尊重的资源。
let eightGb = phones.filter(({ram}) => ram == '8gb');
console.log(eightGb);