在嚴格模式下,間接調用eval
應將this
綁定到eval代碼中的全局對象。爲什麼(0 || eval)在Opera中不被視爲間接?
10.4.2:在版本5中,對eval函數的間接調用使用全局環境作爲eval代碼的變量環境和詞法環境。在版本3中,間接評估的調用者的變量和詞彙環境被用作評估代碼的環境。
然而,在Opera,在undefined
這個表達式的結果:
(function(){'use strict'; return (0 || eval)('this'); }())
Chrome和Firefox按預期方式工作。
我發現這個在這裏:http://kangax.github.com/jstests/indirect-eval-testsuite/
這是一個瀏覽器錯誤?如果是這樣,它是否被追蹤?
參見Why do some forms of indirect eval fail in Opera and Safari?
嘗試評估其他內容,例如警報。如果它能解決歌劇問題。 – Zaffy
@Zaffy我不知道你的意思是什麼......無論「this」是否指向全局對象,「alert」都可以工作。 –
哦,對不起,我認爲eval不能在嚴格模式下使用。我的愚蠢對不起。 – Zaffy