javascript - 如何编写高阶函数以在 JavaScript 中提供控制流?
问题描述
EloquentJS 第 5 章高阶函数在函数示例中提供了新类型的控制流。
有人可以帮我解释为什么除非函数的第二个参数必须是
() => { console.log(n, "是偶数"); }
而不仅仅是
console.log(n, "是偶数")
function repeat(n, action) {
for (let i = 0; i < n; i++) {
action(i);
}
}
function unless(test, then) {
if (!test) then();
}
repeat(3, n => {
unless(n % 2 == 1, () => {
console.log(n, "is even");
});
});
// → 0 is even
// → 2 is even
当我尝试仅通过时
console.log(n, "是偶数")
作为 unless 函数的第二个参数,结果与预期不符,而不是仅打印偶数,而是打印了所有数字。
function unless(test, then) {
if (!test) then;
}
repeat(3, n => {unless(n % 2 == 1, console.log(n, "is even"));});
// → 0 is even
// → 1 is even
// → 2 is even
解决方案
推荐阅读
- laravel - 为什么我的数据没有存储在 laravel 的数据库中?
- recaptcha - 我想更改 recaptcha 方法,而不是复选框,只需单击“我不是机器人”
- python - 将 Python seleniumwire 与代理身份验证一起使用
- c++ - 如何显示从基类派生的对象数组,每个对象都有自己不同的运算符重载函数?
- php - Laravel“属于”功能。不完全确定这是如何工作的。帮助从 Blade 模板访问相关模型信息
- java - CodenameOne - 为 XCode 注入 plist 值的构建提示无法通过构建过程
- tabulator - 制表符 - 为空单元格设置样式
- android - Android Canvas:如何在 Line Draw 上添加阴影?
- macos - Multipass 在 MacOS 和 multipassd 错误日志上完全崩溃
- node.js - Multer 文件上传在服务器上以 500 退出,但在 localhost 上工作(使用 Postman 测试)