亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么使用JavaScript eval函數是一個壞主意?

為什么使用JavaScript eval函數是一個壞主意?

一只名叫tom的貓 2019-05-23 13:27:05
為什么使用JavaScript eval函數是一個壞主意?eval函數是一種動態生成代碼的強大而簡單的方法,那么有什么警告呢?
查看完整描述

4 回答

?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

  1. eval的不正確使用會打開您的注入攻擊代碼

  2. 調試可能更具挑戰性(沒有行號等)

  3. eval'd代碼執行速度較慢(無法編譯/緩存eval'd代碼)


查看完整回答
反對 回復 2019-05-23
?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

評估并不總是邪惡的。有時候它非常合適。

然而,eval目前和歷史上大量過度使用,他們不知道自己在做什么。不幸的是,這包括編寫JavaScript教程的人,在某些情況下,這確實會帶來安全后果 - 或者更常見的是簡單的錯誤。因此,我們越多可以在eval上拋出問號,就越好。每當你使用eval時,你需要理智地檢查你正在做什么,因為你可能會做得更好,更安全,更清潔。

舉一個非常典型的例子,設置一個id存儲在變量'potato'中的元素的顏色:

eval('document.' + potato + '.style.color = "red"');

如果上面那種代碼的作者對JavaScript對象的工作原理有了線索,他們就會意識到可以使用方括號而不是文字點名,從而避免了對eval的需求:

document[potato].style.color = 'red';

...這更容易閱讀,也不那么潛在的錯誤。

(但是,有人/他/他/他們知道他們在做什么會說:

document.getElementById(potato).style.color = 'red';

這比直接從文檔對象訪問DOM元素的狡猾的舊技巧更可靠。)


查看完整回答
反對 回復 2019-05-23
?
MYYA

TA貢獻1868條經驗 獲得超4個贊

我相信這是因為它可以從字符串中執行任何JavaScript函數。使用它可以讓人們更容易將惡意代碼注入應用程序。


查看完整回答
反對 回復 2019-05-23
?
搖曳的薔薇

TA貢獻1793條經驗 獲得超6個贊

我想到兩點:

  1. 安全性(但只要您自己生成要評估的字符串,這可能不是問題)

  2. 性能:直到要執行的代碼未知,它無法進行優化。(關于javascript和性能,肯定是Steve Yegge的演講


查看完整回答
反對 回復 2019-05-23
  • 4 回答
  • 0 關注
  • 543 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號