0

我想知道如何在 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!

4

2 回答 2

3

您实际上并不是在询问全局变量,而是在询问类级别变量。

你需要设置this.currentValue = event.target.innerHTML;

于 2013-09-19T07:12:21.963 回答
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/

于 2013-09-19T07:12:26.400 回答