JavaScript中的变量范围

时间:2011-07-14 17:14:55

标签: javascript

var obj = {

    Variable: 1, 

    Name: function() {
      Variable  += 1;
    }

   return this.Variable
}

var obj = {

    Name: function() {
      var Variable = 1;
      Variable  += 1;
    }

   return Variable
}
  1. 现在这两者有什么区别?
  2. 这两个是否给出了     不同的产出。

4 个答案:

答案 0 :(得分:3)

1)区别在于Variable变量的定义位于不同的位置。

2)不,他们有相同的输出:什么都不输出,给你错误。

===更新您的评论(为什么这是无效代码?)===

因为你不能在对象文字中return

{ return "something" }

完全不正确。

答案 1 :(得分:2)

对象不会返回。这就是功能所做的事情。你缺少关闭。

答案 2 :(得分:2)

你的剧本有很多废话;

在第一种情况下,您声明对象的变量“Variable”成员。

 var obj = {

        Variable: 1,

    }

并使用在global:

中注册的变量“Variable”
var obj = { 
    Name: function() {
      Variable  += 1;
    }
}

您不能在对象中使用return。

var obj = {

   return Variable
}

答案 3 :(得分:0)

不知道你想要什么...

function wrapperFunction()
{
    var Obj = {
        variable: 1,
        ....
    };
    return Obj ;
}

您也可以尝试将整个对象包装在函数内部。然后在每次调用包装函数时使用该函数返回一个新实例。