【发布时间】:2014-09-24 19:20:00
【问题描述】:
我是 JS 新手,正在努力学习。该规范需要以下内容: 编写一个函数,将另一个函数* 作为参数,并创建一个只能调用一次的函数版本。对修改后的函数的重复调用将无效,返回原始调用的值。如果不使用闭包,你怎么能做到这一点?甚至可能吗?你怎么能用闭包做到这一点? *注意:这个原始输入函数不应该有任何参数。
这就是我所拥有的:
var divide = function () {
var x = 2;
var y = 6;
return y/x;
}
var mainFunc = function (func) {
return func(){
return y/x + 1;
}
}
var output = mainFunc(divide);
console.log(divide());
console.log(output());
console.log(output());
我在“return func(){”处收到“Unexpected token{”错误我不太明白我做错了什么?根据规范,我将 divide() 传递给 mainFunc() 并将其设置为参考变量输出。然后我多次调用 divide() 和 output() 来测试闭包是否有效并且修改后的函数只发生一次。我错过了什么或不理解什么?
感谢您的帮助。
【问题讨论】:
-
return func(){ //这是一个语法错误,这里{是意外的记号
-
语法错误是怎么回事?我将divide()传递给mainFunc(),所以func()应该具有divide的属性,对吧?
-
如果您确切地解释您想要实现的目标,也许会有所帮助。用文字,而不是代码。
-
好吧,我想达到规范的要求——编写一个函数,将函数作为参数并创建一个只能调用一次的版本。原函数不应有任何参数。
标签: javascript closures higher-order-functions