eval —— javascript 永久的忌諱

        在 js 的學習過程中,經常會看到 不推薦使用 eval,甚至將 eval 比爲 evil(惡魔)。本人也是覺得,如果沒有十足的必要,就不要用 eval。eval 的作用是能夠將一段 js 文本字符串變成可執行的 js 代碼,與此有類似功能的還有:Function、setInterval、setTimeout不建議使用 eval 的理由有以下幾點:


1. eval 不容易調試:

        在 chromeDev 等環境下,在 eval 處是不能打斷點的;


2. eval 的性能低:

        現代瀏覽器中有兩種編譯模式:fast path 和 slow path,fast path 是編譯那些穩定且可預測的代碼,而 eval 明顯是不可預測,所以編譯的時間會很慢。


3. 安全問題:
        這也是我覺得最主要的原因,eval 在處理不確定字符串的時候,會引起 XSS(跨站腳本攻擊)。而且不光是eval,其他方式也可能引起安全問題。比如:莫名其妙給你注入一個<script src="">標籤,或者一段來歷不明的JSON-P請求,再或者就是Ajax請求中的eval代碼…所以啊,只要你的信息源不安全,你的代碼就不安全。不單單是因爲eval引起的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章