我有一个包含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?
的内容答案 0 :(得分:3)
如果您在浏览器中工作:JavaScript中的全局变量将创建为window
对象的属性。因此,您尝试做的事情可以这样做:
var variable = 'some variable';
var variableName = 'variable';
window[variableName] = undefined;
variable === undefined // Will now be true
然而,事实上这是可能的并不意味着它是一个好主意 - 事实上,它恰好相反,它的风格很糟糕,可能会让任何人感到困惑看着你的节目永无止境。如果您的算法确实需要这样做,那么您可能需要重新考虑数据架构。如果这只是一个范围问题(您不希望该变量污染您的全局命名空间),IIFE可能会解决您的问题。