更改JavaScript中已评估的var的值

时间:2016-05-27 13:03:31

标签: javascript

我有一个包含JSON字符串的var。 (这里我不会解析它,因为它不是主要问题)

var variable = '{"name":"Johnny Appleseed"}';
var string = "variable";

我评估字符串。

var evaluatedstring = eval(string);

现在我想删除var变量的值。

variable = undefined;

如果我这样做:

console.log(evaluatedstring)

它工作正常并返回JSON字符串:

{"name":"Johnny Appleseed"}

但如果我这样做:

evaluatedstring = undefined;

当然它不起作用。

eval(string) = undefined;

也不起作用。 (返回错误Uncaught ReferenceError:赋值中的左侧无效)

如何删除通过评估的var?

的内容
  • 请不要jQuery。
  • 在Chrome 50+上,浏览器没问题。

1 个答案:

答案 0 :(得分:3)

如果您在浏览器中工作:JavaScript中的全局变量将创建为window对象的属性。因此,您尝试做的事情可以这样做:

var variable = 'some variable';
var variableName = 'variable';

window[variableName] = undefined;

variable === undefined // Will now be true

然而,事实上这是可能的并不意味着它是一个好主意 - 事实上,它恰好相反,它的风格很糟糕,可能会让任何人感到困惑看着你的节目永无止境。如果您的算法确实需要这样做,那么您可能需要重新考虑数据架构。如果这只是一个范围问题(您不希望该变量污染您的全局命名空间),IIFE可能会解决您的问题。