如何在javascript中定义全局变量

时间:2013-09-19 07:10:24

标签: javascript

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

2 个答案:

答案 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/