我想知道如何在javascript中定义全局变量。 这就是我正在做的事情,我希望currentValue是全局的,所以每次gotoNext和之前的函数都可以改变它的值
onPageClick : function(event) {
var currentValue = event.target.innerHTML;
if (currentValue == "Next")
this.gotoNext();
if (currentValue == "previous")
this.gotoPrev();
},
gotoNext : function() {
this.currentValue +1;
},
gotoPrevious : function() {
this.currentValue -1;
},
但是在goToNext和gotoPrevious中没有定义currentValue!
答案 0 :(得分:3)
你并不是在问一个全局变量,而是一个类级变量。
您需要设置this.currentValue = event.target.innerHTML;
答案 1 :(得分:0)
您需要在任何函数范围之外定义currentValue。像这样:
<script>
var currentValue = '';
/* YOUR SCRIPT GOES HERE */
</script>
但是,您必须在最后两个函数上更改代码:
gotoNext : function() {
currentValue += 1;
},
gotoPrevious : function() {
currentValue -= 1;
}
但要小心,全局变量是一件坏事。 IMO,定义对象的最佳方法如下:
var yourObject = function(){
var currentValue = '';
var that = {
onPageClick : function(event) {
var currentValue = event.target.innerHTML;
if (currentValue == "Next")
that.gotoNext();
if (currentValue == "previous")
that.gotoPrevious();
},
gotoNext : function() {
currentValue += 1;
},
gotoPrevious : function() {
currentValue -= 1;
}
};
return that;
};
然后,你就这样使用它:
var obj = yourObject();
obj.gotoNext();
obj.gotoPrevious();
我建议你了解范围和关闭:
http://robertnyman.com/2008/10/09/explaining-javascript-scope-and-closures/