JS - 如何正确放置局部变量

时间:2014-01-14 23:16:22

标签: javascript

我有一个JS模块,我想为局部变量设置一个值。我以为我可以使用“this”使用相同的名称:

JS

(function() {
    var amount = 0;
    var setAmount = function(amount) {
        this.amount = amount;
    }
  ........
})();

5 个答案:

答案 0 :(得分:2)

amount属于该函数的范围,因此您不需要this关键字。

(function(){

 var amount = 0;

 var setAmount = function( newAmount ){
   amount = newAmount;
 }
})();

答案 1 :(得分:1)

var amount = 0, setAmount = function(myAmount) {
 myAmount = amount;
};

答案 2 :(得分:0)

你正在使用自我执行的匿名功能,因为这不是一个对象,而是这个"#34;在你的情况下,你只需:

(function(){

 var amount = 0;

 var setAmount = function( pamount ){

                     amount = pamount;
                }
  ........
 })(); 

答案 3 :(得分:0)

this的工作方式

var x = {
amount : 0,
setAmount : function(){
    alert(this.amount);
  }
}

x.setAmount(); //alert 0

答案 4 :(得分:0)

想象一下两个盒子,一个是大盒子,一个是小盒子。小盒子在较大的盒子里面。

小方框代表您定义的setAmount功能。大框表示包装该setAmount函数的闭包。

每个框只知道自身内部是什么以及它的父外框内部是什么。

关键字this,表示此框中的

小方框已经可以看到amount,因为它位于较大的方框中。如果您在小方框内定义this.amount = something,则与var amount = something的内容基本相同。

您还需要小心使用参数名称,因为如果您不小心,这只会导致头痛。

您遇到的问题是一个范围问题,如果您必须以这种方式命名变量 - 这是一个解决方案。

(function() {
    var amount = 0;
    var scope = this;
    var setAmount = function(amount) {
        scope.amount = amount;
    }
  ........
})();

这样做是在更大的框中创建一个变量,该变量引用回其范围(在我们的示例中回到它自己的框中)。因为小盒子在大盒子里面,所以它可以看到范围变量。