JavaScript: 在对象声明中声明变量

8
在JavaScript中,声明变量时是否可以在对象声明内部进行?我想要类似于以下的语法:
var myObject = {
    myLabel: (var myVariable)
};

而不是必须编写

var myVariable;
var myObject = {
    myLabel: myVariable
};

编辑

我希望你能用Node.JS上下文进行翻译。这是我的内容:

var server = {};
var database = {};
var moar = {};

module.exports = {
    server: server,
    database: databse,
    moar: moar
};

doStuffAsync(function callback() {
    // Populate variables
    server = stuff();
    database = stuff2();
});

4
为什么你需要那个? - t.niese
1
myObject.myLabel 无论如何都会是未定义的,就像 myObject.yourLabel 一样,那有什么意义呢? - danronmoon
编辑问题以澄清我为什么想要这个。 - Randomblue
为什么不将module.exports传递给你的doStuffAsync函数,以便您可以直接在该对象上设置“server”和“database”? - t.niese
我能想到这样做的唯一原因是为了节省一行代码。如果你担心代码行数的问题,可以考虑使用代码压缩而不是破坏可读性。 - jbabey
2个回答

9

如果你想在对象中作用域一个变量,可以使用IIFE(立即调用的函数表达式)

var myObject = {
    a_variable_proxy : (function(){ 
        var myvariable = 'hello'; 
        return myvariable; 
    })()
};

3
应该是 a_variable_proxy: (function(){ var myvariable; return myvariable; })(),否则将会出现语法错误。 - t.niese
1
需要移除分号 :) - codingbiz
5
也许这就是 OP 寻找的内容。但从技术上讲,变量的作用域并不像你说的那样限定在对象范围内,而是限定在 IIFE 内部。 - bfavaretto
@bfavaretto 但由于它返回变量,因此可以在类内部访问。(这是对旧评论的新回复,但希望它能帮助新来者。) - Nimeshka Srimal

3
你可以直接给键分配值。
如果你现在有:
var myVariable = 'some value';
var myObject = {
    myLabel: myVariable
};

你可以用以下内容替换它:
var myObject = {
    myLabel: 'some value'
};

1
那是他/她试图避免的事情。 - Jonathan J. Pecany

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接