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