Undefined不是一个函数-JavaScript
我这里有一个简单的问题。下面是代码Undefined不是一个函数-JavaScript,javascript,Javascript,我这里有一个简单的问题。下面是代码 var num=0; var increment=函数(){ 返回函数(){num++;}; }; 增量(); 增量(); 但是,当我试图运行它时,它会出错,因为未定义不是一个函数。怎么会?increment显然不是一种功能吗 另外,当我编写typeof increment时,它返回undefined 当两次调用increment()时,它应该修改num,并变为2。但是返回函数()返回什么呢?您应该只返回num var num = 0; var increm
var num=0;
var increment=函数(){
返回函数(){num++;};
};
增量();
增量();
但是,当我试图运行它时,它会出错,因为未定义不是一个函数。怎么会?increment
显然不是一种功能吗
另外,当我编写typeof increment
时,它返回undefined
当两次调用increment()
时,它应该修改num
,并变为2。但是返回函数()返回什么呢?您应该只返回num
var num = 0;
var increment = function() {
num++;
};
increment();
increment();
var num = 0;
var increment = function() {
num++
return num;
};
var something = 0;
something = increment();
something = increment();
alert(something);
是,增量函数不增加变量;它返回一个内部函数,该函数将在调用时递增变量
如前所述,您必须调用调用增量函数的结果:
increment()(); //results in num++
var increment = (function() {
return function() { num++; };
}());
或
根据您的注释,如果要从函数返回函数,请调用increment()
返回的函数:
或者,更适合:
var incrementer = increment();
incrementer(); //Call this each time you want to increment num
这不是一个函数。。。确切地函数“increment”返回一个函数,而不是递增的值。正确的方法应该是:
var increment=function(){return num++;}
Phil如果要将内部函数分配给增量
,则需要执行外部函数:
increment()(); //results in num++
var increment = (function() {
return function() { num++; };
}());
(这被称为an,简称IIFE。)当然,更简单的方法是:
var increment = function() { num++; };
但也许你还有其他原因想用更复杂的方式来做这件事。我猜你想做这样的事情:
> var makeIncrement = function () { var num = 0; return function () { return num++ } }
undefined
> increment = makeIncrement()
function () { return num++ }
> increment()
0
> increment()
1
必须调用函数(makeIncrement()
)才能返回内部函数,然后可以将其分配给变量。一旦分配了它,您就可以调用它,它将按照您的预期工作。它在Chrome控制台中为我工作。(顺便说一句,为什么不简单地定义var increment=function(){num++;}
?这段代码看起来不错,尽管从increment()返回函数很奇怪。)
我特意将其设置为函数内部的函数,只是为了测试一个案例。使用这种形式,我如何使函数工作?我怀疑此代码会引发这样的错误。正如@TedHopp指出的,您在哪个环境下执行此操作?我想将其设置为函数内部的函数我想将其设置为函数内部的函数I想让它成为functionHi Tedd中的一个函数。我试过了,它仍然说undefined不是一个函数function@user122652-您使用什么环境来执行此操作?increment
在我看来就像一个函数。它返回什么并不重要。@user122652没问题,很乐意提供帮助。顺便说一句,我刚刚编辑使用var num
所以num
变量对代码的其余部分不可见。这意味着您可以有几个increment
函数,每个函数都有各自独立的计数器。@user122652如果您的问题得到解决,请不要忘了接受答案,并对任何您认为有用的答案进行投票。@user122652您可以投票选择尽可能多的答案u want.Upvoting表示您发现答案很有用。若要接受您最喜欢的答案,请单击答案旁边的勾选框。勾选框将变为绿色,表示答案已被接受。@user122652没问题:)