在 JavaScript 中具有真值的回调函数
Callback function with a truthy value in JavaScript
这是我在 Whosebug 上的第一个 post,如果您能帮助我在概念层面上阐明以下 JavaScript 函数中发生的事情,我将不胜感激。所以,我已经练习了一段时间的语言,现在我正在更深入地研究函数的世界。这是我的困境:
function findEven(array, callback) {
for (let i = 0; i < array.length; i++) {
if (callback(array[i])) {
console.log(array[i]);
}
}
}
function isEven(num) {
return num % 2 === 0;
};
findEven([2, 4, 6, 7, 9, 12], isEven);
现在,我明白了它的作用,而且我知道我可以通过简单的 .forEach()
获得相同的结果。不过,我想得到的是条件 if (callback(array[i]))
正在做什么。是否确定回调函数是否真实(根据 MDN 词汇表,所有值都是真实的,除非它们被定义为虚假)?为什么会这样,因为我在定义后在最终数组中添加了回调函数?事实上,如果我尝试将其剥离,它会 returns 错误:"callback is not a function"。你能证实吗?
我希望我 post 以有意义的方式回答了我的问题,在此先感谢!
条件 callback(array[i])
验证作为 callback
传递的 isEven()
函数的值对于 array[i]
的计算结果是否为 true/false
。
function findEven(array, callback) {
for (let i = 0; i < array.length; i++) {
console.log(i, array[i], callback(array[i]));
if (callback(array[i])) {
console.log(array[i]);
}
}
}
function isEven(num) {
return num % 2 === 0;
};
findEven([2, 4, 6, 7, 9, 12], isEven);
如果您打印 console.log
语句,您将看到,对于这些值,callback()
的计算结果为 true
,并在控制台中打印出来。 False
值被忽略。
语法
if(callback(parameters))
检查 callback(parameters)
returns 是否为真实值。在您的情况下,对于偶数,您的函数 returns true
当然是真实的。
此外,如果您在调用 findEven
时从参数中删除回调函数,则 callback
的值将为 undefined
。然后尝试像 callback(array[i])
那样调用它会给出该错误,因为 undefined
不可调用(你不能做 undefined()
)
这是我在 Whosebug 上的第一个 post,如果您能帮助我在概念层面上阐明以下 JavaScript 函数中发生的事情,我将不胜感激。所以,我已经练习了一段时间的语言,现在我正在更深入地研究函数的世界。这是我的困境:
function findEven(array, callback) {
for (let i = 0; i < array.length; i++) {
if (callback(array[i])) {
console.log(array[i]);
}
}
}
function isEven(num) {
return num % 2 === 0;
};
findEven([2, 4, 6, 7, 9, 12], isEven);
现在,我明白了它的作用,而且我知道我可以通过简单的 .forEach()
获得相同的结果。不过,我想得到的是条件 if (callback(array[i]))
正在做什么。是否确定回调函数是否真实(根据 MDN 词汇表,所有值都是真实的,除非它们被定义为虚假)?为什么会这样,因为我在定义后在最终数组中添加了回调函数?事实上,如果我尝试将其剥离,它会 returns 错误:"callback is not a function"。你能证实吗?
我希望我 post 以有意义的方式回答了我的问题,在此先感谢!
条件 callback(array[i])
验证作为 callback
传递的 isEven()
函数的值对于 array[i]
的计算结果是否为 true/false
。
function findEven(array, callback) {
for (let i = 0; i < array.length; i++) {
console.log(i, array[i], callback(array[i]));
if (callback(array[i])) {
console.log(array[i]);
}
}
}
function isEven(num) {
return num % 2 === 0;
};
findEven([2, 4, 6, 7, 9, 12], isEven);
如果您打印 console.log
语句,您将看到,对于这些值,callback()
的计算结果为 true
,并在控制台中打印出来。 False
值被忽略。
语法
if(callback(parameters))
检查 callback(parameters)
returns 是否为真实值。在您的情况下,对于偶数,您的函数 returns true
当然是真实的。
此外,如果您在调用 findEven
时从参数中删除回调函数,则 callback
的值将为 undefined
。然后尝试像 callback(array[i])
那样调用它会给出该错误,因为 undefined
不可调用(你不能做 undefined()
)