javascript - 访问用作另一个函数的参数的函数
问题描述
我不确定如何解释这个问题,但我会尽力而为。目前,我正在处理 codewars 上的“默认参数”kata。这涉及创建一个函数“defaultArguments”,该函数可以将另一个函数作为参数,以及一个具有要使用的默认值的对象。然后将此函数设置为等于一个变量,然后使用其他参数调用该变量。基本上,这个想法是如果函数调用没有提供参数,则使用默认参数。但是,存在参数时不使用默认参数。因此,在这个 kata 上提供的测试如下:
function add(a,b) { return a+b; }
var add_ = defaultArguments(add,{b:9});
Test.assertEquals(add_(10), 19);
Test.assertEquals(add_(10,5), 15);
var add_ = defaultArguments(add_,{b:3});
Test.assertEquals(add_(10), 13);
我设法创建了一段代码,当提供类似于“添加”函数的函数时,该代码将正确运行。但是,我现在遇到下面的函数并且我的代码失败了。
var closure_counter = (function accumulator() { var counter = 0; return function (x) { return counter += x; }; })();
我认为这个 'closure_counter' 然后像以前一样传递给 defaultArguments 函数。
但是,以前面的“add”函数为例,我程序的第一阶段是将函数参数转换为字符串:
function_string = func.toString();
然后用这个字符串来基本隔离需要运行的代码。在“添加”示例中,这将 console.log 以下内容:
FUNCTION STRING: function add(a,b) { return a+b; }
然后,我将使用以下方法将其与其他信息一起返回:
let new_function = new Function():
我的程序的其余部分将运行。问题似乎是当我遇到上面的'closure_counter'函数时。当我使用相同的 func.toString() 和 console.log() 时,我的输出是这样的:
FUNCTION STRING: function (x) { return counter += x; }
所以它基本上错过了函数的第一部分,其中包括变量计数器的声明。这是执行我的代码所必需的。
基本上,以后有没有办法在我的代码中访问这个变量,或者将它传递给 func.toString() 以便我可以隔离我需要的变量?
如果不清楚,谢谢并道歉!
解决方案
推荐阅读
- jenkins - 在 GitHub 中,如何授予应用程序权限以提交到具有保护的分支?
- javascript - 使用 NextJS 和 Passport 保护 API 路由:req.user undefined
- java - org.h2.jdbc.JdbcSQLDataException:数据转换错误转换“'MONTH'”;SQL 语句:
- r - 向量化 R 中的函数
- delphi - Delphi Sydney 10.4.1 快速报告
- java - Java 如果函数没有获取参数
- c - 使用 WinHTTP 在 C 中下载可执行文件 (.exe)
- javascript - 将嵌套的对象数组转换为 JavaScript 或 TypeScript 中数据的特定对象组
- angular - 为什么Angular 11和Electron会产生没有内容的窗口
- javascript - 更新 Javascript document.querySelector | 只有第一个对象有效