-2

一开始我声明一个像这样的变量:

var content = "likes";

var main_likes_data = true;

后来我想将变量更改为false,但我需要添加一个新变量,如下所示:

main_" + content + "_data = false;

但这不起作用!

有人可以告诉我更改变量的正确语法吗?

谢谢你!!!

4

3 回答 3

4

你需要一个关联数组。

var content = "likes";
var main_data = {
   likes: true,
   somethingelse: false,
   xyz: false
};

main_data[content] = false;
于 2012-07-30T16:01:43.793 回答
0

这是非常糟糕的编程习惯,但您可以使用 eval:

eval("main_" + content + "_data = false");

我个人不会使用eval自己,但其他人会。引用 John Resig 的话:

“绝大多数 [eval] 被大多数 JavaScript 程序员轻描淡写、误用和彻底谴责,但通过查看一些最好的编码人员的工作,你可以看到,如果使用得当,[它] 可以创建一些很棒的代码片段否则这是不可能的”</p>

John Resig,在JavaScript Ninja 的秘密中

于 2012-07-30T16:03:00.113 回答
0
window["main_" + content + "_data"] = true;

这作为

a) 默认情况下,在没有定义范围的情况下创建的变量的范围是window对象
b) 您可以在 javascript 中使用方括号表示法与点表示法互换。方括号表示法接受一个字符串。可以使用变量连接字符串。

现场示例:http: //jsfiddle.net/bX5Zy/

于 2012-07-30T16:01:31.747 回答