我已經在網站上閱讀了很多問題,但沒有理解括號內的問題。邪惡的eval +括號樣本?
eval('{a:alert(1)}'); //alert 1
而且此警報1:
eval('('+'{a:alert(1)}'+')'); //alert 1
那麼,如何'()'
幫助我嗎?
我已經知道()
使應該被理解成epxression而不是作爲一個聲明
的代碼,但我沒有看到我的樣品中它是如何要去幫助。
您能否提供樣品?
我已經在網站上閱讀了很多問題,但沒有理解括號內的問題。邪惡的eval +括號樣本?
eval('{a:alert(1)}'); //alert 1
而且此警報1:
eval('('+'{a:alert(1)}'+')'); //alert 1
那麼,如何'()'
幫助我嗎?
我已經知道()
使應該被理解成epxression而不是作爲一個聲明
的代碼,但我沒有看到我的樣品中它是如何要去幫助。
您能否提供樣品?
考慮:前面已經提到
eval("({a: 'my great object'}.a);");
和
eval("{a: 'my great object'}.a;");
:第二個是與標籤的代碼塊這樣。一個根本沒有任何意義。
新,恕我直言,'()'只適用於json ...對嗎?但'{a:'...'}'不是json ...我不明白爲什麼我應該在eval json obj時使用()。 –
改爲使用JSON.parse。 (尋找着名:eval是邪惡的)。它不僅與json:請參閱'function a(){ return(endl here!) {a:'a'}; } a();'不能像預期的那樣工作(分號插入+指定的代碼塊在這裏) – neo
您已經自己回答了這個問題:圓括號用於將對象文字(表達式內)而不是代碼塊解釋爲對象文字。 –
@RobW如果它是相同的,爲什麼我需要'()'?我沒有看到好處(我一定是錯的)。你能否提供一個會對我的網站造成傷害的例子,以及()如何提供幫助? –
這取決於你想要什麼。你有什麼打算? '{a:alert(1)}'是帶有標籤a的代碼塊,'({a:alert(0)})'是一個對象文本,其中包含alert(0)'的結果。 –