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

蕭十郎
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元素的狡猾的舊技巧更可靠。)

搖曳的薔薇
TA貢獻1793條經驗 獲得超6個贊
添加回答
舉報
0/150
提交
取消