如何使用Javascript函数命名变量?

时间:2012-06-26 12:48:59

标签: javascript variables

我希望能够使用函数创建变量,例如:

function createVar(a,b){
    var [a]name[b];
}

因此,如果我调用函数createVar(prefix,suffix),我最终会得到一个名为prefixnamesuffix的变量。

3 个答案:

答案 0 :(得分:4)

您不能以这种方式创建局部变量,但可以使用字符串创建属性。

function createVar(obj, a, b)
{
   obj[a+'name'+b] = foo;
}

答案 1 :(得分:1)

function createVar(a, b, value) {
    // declare the variable on current context(default is window),
    // and set value, default is undefined
    this[a + 'name' + b] = value;
}

用作:

createVar('a', 'b');
// variable anameb now is declare, but it's value is undefined
console.log(anameb); // -> undefined

createVar('prefix', 'suffix', 'optional');
// variable prefixnamesuffix now is exist in window
console.log(prefixnamesuffix); // -> 'optional'

或:

var obj = {};
createVar.call(obj, 'pre', 'suf', 'defValue');
// variable prenamesuf is now exist in obj, but not exist in window
console.log(obj.prenamesuf); // -> 'defValue'
console.log(prenamesuf); // ReferenceError: prenamesuf is not defined

答案 2 :(得分:0)

这是可能的 - 因为它有点棘手。

这一切都始于理解变量的范围。让我们看一个基本的简单例子:

var myvar = 'I see';

这会在名为myvar的基本级别创建一个可变的,您可以访问alert(myvar);,例如var myvar = 'I see';,在这种情况下会提醒“我看到”。

这实际上是在窗口对象上创建一个属性。因此,window['myvar'] = 'I see';window['fred'] = 'howdy fred';// create fred property var regularfred = 'howdy fred'; // create regularfred property window['town'] = {}; // create town object window['town']['george'] = 'georgetown'; //create town.george property alert(fred + ":" + regularfred); // alerts "howdy fred:howdy fred" alert(fred == regularfred);// alerts true alert(this['town']['george']);// alerts "georgetown" function createvar(a, b) { this[a + 'name' + b] = "fredling"; alert(this[a + 'name' + b]);// alerts "fredling" alert(window[a + 'name' + b]);// alerts "fredling" } var hi = 'hi'; var lo = 'loook'; createvar(hi, lo); alert(this[hi + 'name' + lo]);// alerts "fredling" 相同。

也可以这种方式创建复杂对象。

更多例子:

{{1}}

要求举例:http://jsfiddle.net/pGWZN/