我想声明一个局部变量:
(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个语句。
答案 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)