声明一个局部变量

时间:2011-10-10 09:35:28

标签: javascript

我想声明一个局部变量:

(var n=1)

大部分时间我都可以操纵它的评估顺序。

然后我可以做

var increaseadNumber = (
    ar={
        inc:function(n){
            return n+1
        },
        dec:function(n){
            return n+2
        }
   }
).inc(1);
console.log(ar)//the object
console.log(increaseadNumber )//2

但是,在我的例子中,ar位于全局命名空间中,并且

var increaseadNumber = (
  var ar={
        inc:function(n){
            return n+1
        },
        dec:function(n){
            return n+2
        }
   }
).inc(1);//syntax error

生成“SyntaxError:Unexpected token var”

当然,我可以在2个语句中声明这个,但我更愿意用1个语句。

6 个答案:

答案 0 :(得分:2)

为什么不把它分成两行?

var ar={inc:function(n){return n+1},dec:function(n){return n+2}};
ar.inc(1);

当你在它的时候添加一些合理的空白区域:

var ar = {
    inc: function(n) {
        return n + 1
    },
    dec: function(n) {
        return n + 2
    }
};
ar.inc(1);

或者如果你真的不喜欢空白,这是一个妥协:

var ar = {
    inc: function(n) { return n + 1 },
    dec: function(n) { return n + 2 }
};
ar.inc(1);

答案 1 :(得分:0)

var外,for (var ...)关键字不能使用左括号。也许将表达式包装在一个函数中:

ar = (function (n) {
  return /* compute the value for ar here */;
})(1)

答案 2 :(得分:0)

您可以将语句拆分为:

var ar={inc:function(n){return n+1},dec:function(n){return n+2}}; ar.inc(1);

答案 3 :(得分:0)

var ar = { 
  inc: function (n) { return n+1 },
  dec: function (n) { return n+2 } 
};
ar.inc(1);

只需在本地声明它并以单独的表达方式调用它。

如果您真的想要一个表达式,我建议您声明一次性局部变量__

var ar = { 
  inc: function (n) { return n+1 },
  dec: function (n) { return n+2 } 
}, __ = ar.inc(1);

调用多个表达式的唯一方法是声明多个变量

答案 4 :(得分:0)

不确定你想做什么,但是这个IIF(立即调用函数)对你来说可能是一个想法?添加了一些间距,如果您想维护代码,建议使用它。

   alert(
    (function(n){
     n = n || 1;
     return {
              inc: function(n){ return n+1; },
              dec: function(n){ return n+2; }
            };

    }(1)).inc(1)
   ); //=> 2

答案 5 :(得分:0)

如果你想要一个局部变量,请尝试在函数中声明它,

(function () {
    var ar={inc:function(n){return n+1},dec:function(n){return n+2}};
    return ar;
})().inc(1)