Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用回调函数(胖箭头函数)作为函数参数解释该示例_Javascript_Arrays_Filter_Ecmascript 6_Arrow Functions - Fatal编程技术网

Javascript 用回调函数(胖箭头函数)作为函数参数解释该示例

Javascript 用回调函数(胖箭头函数)作为函数参数解释该示例,javascript,arrays,filter,ecmascript-6,arrow-functions,Javascript,Arrays,Filter,Ecmascript 6,Arrow Functions,我正在学习Udemy课程es6javascript:完整的开发人员指南 斯蒂芬·格里德(Stephen Grider)我一个人。前4节的大部分内容都太简单了,所以我一直在做所有带胖箭头功能的练习(这对我来说是新的,本课程到目前为止还没有涉及到),以使它更有趣 然而,当我进入编码练习8:挑战!实现“拒绝”,我不知道如何使用胖箭头函数 挑战在于创建一个名为“拒绝”的函数,该函数的工作方式与Array.filter相反。从概念上讲,这很简单-只需使用 被难住了,我找到了一个使用胖箭头函数的解决方案。这

我正在学习Udemy课程
es6javascript:完整的开发人员指南
斯蒂芬·格里德(Stephen Grider)
我一个人。前4节的大部分内容都太简单了,所以我一直在做所有带胖箭头功能的练习(这对我来说是新的,本课程到目前为止还没有涉及到),以使它更有趣

然而,当我进入
编码练习8:挑战!实现“拒绝”
,我不知道如何使用胖箭头函数

挑战在于创建一个名为“拒绝”的函数,该函数的工作方式与
Array.filter
相反。从概念上讲,这很简单-只需使用

被难住了,我找到了一个使用胖箭头函数的解决方案。这是:

const numbers = [10, 20, 30];

function reject(array, iteratorFunction) {
    return array.filter(arrItem => !iteratorFunction(arrItem))

}
reject(numbers, num => num > 15);

我不明白。有人能解释一下这是怎么回事吗?另外,使用胖箭头函数是否有更好的实现?

num=>num>15转换为以下匿名函数

function(num){
  return num > 15
}
如果只有一个参数,则不需要提供圆括号,如果要返回表达式,则可以跳过大括号并编写“return”


一旦函数语法明确,那么就只需要将函数作为参数传递给拒绝函数,并将数组的值作为参数提供给匿名函数。

num=>num>15转换为以下匿名函数

function(num){
  return num > 15
}
如果只有一个参数,则不需要提供圆括号,如果要返回表达式,则可以跳过大括号并编写“return”


函数语法一旦明确,就只需要将函数作为参数传递以拒绝,并将数组的值作为参数提供给匿名函数。

要理解示例,需要熟悉回调函数、匿名函数和箭头语法的用法

以代码为例:

function reject(array, iteratorFunction) {
    return array.filter(arrItem => !iteratorFunction(arrItem));
}
let result = reject(numbers, num => num > 15);
数组
filter
:方法
filter()
创建一个新数组,其中包含通过所提供回调函数实现的测试的所有元素

什么是回调函数?回调函数是作为参数传递到另一个函数中的函数,然后在外部函数中调用该函数以完成某种例程或操作。当函数及其主体(代码)在调用过程中实际传递时,就会发生这种调用

以下代码是回调函数:
arrItem=>!迭代器函数(arrItem)
该函数返回一个布尔值。该函数以箭头语法编写

这也可以写成:

function(arrItem) {
    return !iteratorFunction(arrItem);
}
function(num) {
    return num > 15;
}
iteratorFunction
也是一个回调函数,返回布尔值。“!”运算符使返回的布尔值为非(将true变为false,反之亦然)

因此,以下
拒绝
功能代码的工作原理类似:

function reject(array, iteratorFunction) {
    return array.filter(function(arrItem) {
                            return !iteratorFunction(arrItem);
    });
}
-以下内容同上-

function reject(array, iteratorFunction) {

    let myCallback = function(arrItem) {
                         return !iteratorFunction(arrItem);
                     };

    return array.filter(myCallback);
}

迭代器函数是回调函数

在该示例中,考虑此代码:<代码> num=num > 15

该代码是回调函数的箭头语法。这也可以写成:

function(arrItem) {
    return !iteratorFunction(arrItem);
}
function(num) {
    return num > 15;
}
这意味着代码:

function reject(array, iteratorFunction) {
    return array.filter(arrItem => !iteratorFunction(arrItem));
}
let result = reject(numbers, num => num > 15);
-也可以写成-

let result = reject(numbers, function(num) {return num > 15});
let myCallback = function(num) {
    return num > 15;
}

let result = reject(numbers, myCallback);
-也可以写成-

let result = reject(numbers, function(num) {return num > 15});
let myCallback = function(num) {
    return num > 15;
}

let result = reject(numbers, myCallback);

结果是:
[10]

要理解示例,需要熟悉并使用回调函数、匿名函数和箭头语法

以代码为例:

function reject(array, iteratorFunction) {
    return array.filter(arrItem => !iteratorFunction(arrItem));
}
let result = reject(numbers, num => num > 15);
数组
filter
:方法
filter()
创建一个新数组,其中包含通过所提供回调函数实现的测试的所有元素

什么是回调函数?回调函数是作为参数传递到另一个函数中的函数,然后在外部函数中调用该函数以完成某种例程或操作。当函数及其主体(代码)在调用过程中实际传递时,就会发生这种调用

以下代码是回调函数:
arrItem=>!迭代器函数(arrItem)
该函数返回一个布尔值。该函数以箭头语法编写

这也可以写成:

function(arrItem) {
    return !iteratorFunction(arrItem);
}
function(num) {
    return num > 15;
}
iteratorFunction
也是一个回调函数,返回布尔值。“!”运算符使返回的布尔值为非(将true变为false,反之亦然)

因此,以下
拒绝
功能代码的工作原理类似:

function reject(array, iteratorFunction) {
    return array.filter(function(arrItem) {
                            return !iteratorFunction(arrItem);
    });
}
-以下内容同上-

function reject(array, iteratorFunction) {

    let myCallback = function(arrItem) {
                         return !iteratorFunction(arrItem);
                     };

    return array.filter(myCallback);
}

迭代器函数是回调函数

在该示例中,考虑此代码:<代码> num=num > 15

该代码是回调函数的箭头语法。这也可以写成:

function(arrItem) {
    return !iteratorFunction(arrItem);
}
function(num) {
    return num > 15;
}
这意味着代码:

function reject(array, iteratorFunction) {
    return array.filter(arrItem => !iteratorFunction(arrItem));
}
let result = reject(numbers, num => num > 15);
-也可以写成-

let result = reject(numbers, function(num) {return num > 15});
let myCallback = function(num) {
    return num > 15;
}

let result = reject(numbers, myCallback);
-也可以写成-

let result = reject(numbers, function(num) {return num > 15});
let myCallback = function(num) {
    return num > 15;
}

let result = reject(numbers, myCallback);

结果是:
[10]

您到底不明白什么?您正在传递拒绝作为第二个参数的抽象函数“num=>num<15”,所以这个“!iteratorFunction(arrItem))”正在调用它您到底不明白什么?您正在传递拒绝作为第二个参数的抽象函数“num=>num<15”,所以"!iteratorFunction(arrItem))“正在调用它