那是因为actionInt
在这一行中声明了:
var actionInt = parseInt(action);
并且您正在递增this.actionInt++
,this
调用上下文在哪里,由临时确定(可能是您附加事件侦听器的对象)。
我强烈建议您阅读JS 中this
实际引用的内容,就像我还建议您在使用时指定基数parseInt
一样,并意识到这没有意义:
actionInt = parseInt(action, 10);//action is number?
if (action === 'next')//action is string?
如果action
是next
or previous
,parseInt
将始终返回NaN
,当递增时,仍然是NaN
(Not A Number + 1 is Not A Number)
但是无论你怎么看,我认为你实际上是在寻找一个闭包:
onPageClick : (function(actionInt)
{
return function(event)
{
var action = event.target.innerHTML;
this.loadPage(actionInt, 25);//what is this?
if (action == "Next"){
console.log(actionInt++);//no this
}
else if (action == "previous"){
console.log(actionInt--);
}
};
}(0)),//pass initial actionInt value here
有关JS如何解析表达式/变量名称以及闭包如何工作的详细信息,请参阅this answer
...
如果actionInt
是全局变量,则可以省略IIFE,只需使用actionInt
,默认情况下它将解析为全局变量(或抛出如果未在严格模式下定义,则会出错)