2016-05-27 55 views
-1

我有一個包含JSON字符串的var。 (這裏我不會解析它,因爲它不是主要問題)在JavaScript中更改評估變量的值

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; 

也不起作用。 (返回錯誤未捕獲的ReferenceError:賦值中的左側無效)

如何刪除通過評估變量的內容?

  • 請不要jQuery。
  • 在Chrome 50+上,瀏覽器沒有問題。
+0

你想達到什麼目的? 「刪除」一個變量很奇怪。 – Pointy

+0

更像是刪除var的內容實際上 – zehata

+0

如果你想清除一個變量,你可以使它成爲一個空字符串。 var x =「」;,就是。此外,它認爲你試圖檢查eval(字符串)是否評估爲false。 –

回答

3

如果您在瀏覽器中工作:JavaScript中的全局變量是作爲window對象的屬性創建的。因此,你正在做什麼可以做這樣的:

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

window[variableName] = undefined; 

variable === undefined // Will now be true 

然而,僅僅是事實,這是可能的,並不意味着它是一個好主意 - 事實上,它正好相反,這是不好的風格,並可能會讓任何看着你的程序的人感到困惑。如果這對於您的算法是否真的有用,那麼您可能需要重新考慮您的數據架構。如果這只是一個範圍問題(您不希望該變量污染您的全局名稱空間),則IIFE可能會解決您的問題。

+0

所以我明白,如果我可能再次這樣做,我應該使用字典呢? – zehata

+0

我無法真正回答這個問題,因爲我仍然無法想象爲什麼你會這麼做。你確定沒有更好的方法嗎? – BadIdeaException