2012-06-22 45 views
0

我的問題關於eval()函數在JavaScriptJava腳本eval()函數屬於哪個Object?也執行上下文傳遞在調用eval()函數

  1. 到哪個對象確實的eval()屬於哪一種?
  2. 我們知道所有的java腳本代碼都會得到一個執行上下文。 eval()得到什麼執行上下文?它是全局執行上下文嗎?
  3. 爲什麼eval()被稱爲邪惡?是否有任何情況下eval()函數可以成爲救星?
+1

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/eval – fcalderan

+0

http://stackoverflow.com/questions/86513/why-is-using-the-javascript-eval-function -a-bad-idea –

回答

0
  1. 當你忽略一個對象時,你實際上是在窗口對象上調用它。所以它的window.eval,但因爲它的默認與全球範圍相同。
  2. Eval scope is tricky.基本全球範圍。
  3. Eval是非常邪惡的,你允許用戶執行任意代碼。這是一件非常可怕的事情。特別是當它有用戶輸入時,你不想使用eval。任何惡意用戶可能真的會給你一個糟糕的時間。
+0

關於2):http://es5.github.com/x10.html#x10.4.2所以它的本地基本 – jasssonpet

+0

@Niklas B。你爲什麼說在瀏覽器上執行惡意代碼並不危險?客戶端機器是否處於危險之中? – Inquisitive

+0

我剛剛發現一個有用的情況下的eval()在http://24ways.org/2005/dont-be-eval頭下**有什麼好處?** – Inquisitive