不调用该函数如何执行

时间:2019-07-21 16:29:44

标签: javascript arrays

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

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

1 个答案:

答案 0 :(得分:2)

该代码正在调用一个函数,它正在调用phones的{​​{3}}方法,该方法大概是一个数组。 (方法就是函数。)filter方法依次为数组中的每个条目调用传递给它的函数(“回调”)。 filter构建一个新数组,该数组仅包含回调返回其真实值的原始数组的条目。因此,如果phones中有12个项目,则回调将被调用12次:每个项目一次。该代码正在构建一个新数组,其中仅包含具有ram == '8gb'的项目。


附带说明,但是该特定代码有点误导,因为它返回item而不是truefilter回调的返回值是一个标志。最好将回调写成这样:

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

或简洁的filter,带有参数arrow function

let eightGb = phones.filter(({ram}) => ram == '8gb');
console.log(eightGb);