摘要:然而,函數只有在當前作用域中直接被調用并且被調用的函數名為才會被執行。在全局作用域下,這個字符串會一直被執行,在這個情形下我們并沒有直接調用函數,也可以執行字符串。總結函數應該盡可能地避免使用。
Javascript 的 eval 函數可以在當前作用域執行一段包含 Javascript 代碼的字符串。
var foo = 1; function test() { var foo = 2; eval("foo = 3"); return foo; } test(); // 3 foo; // 1
然而,eval 函數只有在當前作用域中直接被調用并且被調用的函數名為 eval 才會被執行。
var foo = 1; function test() { var foo = 2; var bar = eval; bar("foo = 3"); return foo; } test(); // 2 foo; // 3
eval 函數的使用應該被避免,99.9% 使用 eval 函數所實現的功能都可以通過不使用 eval 函數來實現。
偽裝的 eval 函數定時函數 setTimeout 和 setInterval 函數都可以接受字符串作為自己的第一個參數。在全局作用域下,這個字符串會一直被執行,在這個情形下我們并沒有直接調用 eval 函數,也可以執行字符串。
安全問題eval 函數毫無疑問將會造成安全問題,因為它會執行任何傳給它的字符串,所以永遠不要對未知或未信任源傳來的字符串使用 eval 函數。
總結eval 函數應該盡可能地避免使用。任何使用 eval 函數的代碼都應該被質疑。我覺得 @justjavac 前輩在 《js中eval()函數的用處?》 問題中的回答總結的很好,那就是“學習 eval 函數,并遠離 eval 函數”。
參考
http://bonsaiden.github.io/JavaScript-Garden/#core.eval
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/78096.html
摘要:當間隔時間設置較小時,將會導致回調函數堆積。處理可能阻塞的代碼最簡單且最可控的方式就是在回調函數內部使用函數。但是很明顯,由于指定最大值的限制,還會有定時器沒有被清除掉。另外,盡量避免使用函數,從而避免可能導致的回調函數堆積現象。 由于 Javascript 是異步的,因此我們可以通過 setTimeout 和 setInterval 函數來指定特定時間執行代碼。 function ...
摘要:有兩個可以表示空的值,分別是和,比較有作用的是前者。訪問聲明但未初始化的變量。有返回值時函數的表達式沒有顯式的返回任何內容。然而,為了比較其他變量和值,我們需要提前取得的值。因此,從標準實行后,全局變量已經是不再可寫。 Javascript 有兩個可以表示空的值,分別是 undefined 和 null,比較有作用的是前者。 undefined undefined 是一種值為 un...
摘要:此時會自動插入分號,解析器將再次嘗試。工作原理下面的代碼沒有分號,因此解析器將會自己判斷在哪些地方插入分號。前置小括號在有前置小括號的情形時,解析器將不會自動插入分號。這不僅將保證代碼整體的一致性,也將有效地避免解析器對代碼行為的錯誤改變。 盡管 Javascript 有類似 C 的句法風格,但是它并不強制在代碼中使用分號,所以分號可能被省略。Javascript 并不是一個缺少分號的...
摘要:文件就是記錄了從源代碼文件到壓縮文件的一個代碼對應關系記錄表,通過壓縮文件和文件可以原原本本找出源代碼文件。 細說 js 壓縮、sourcemap、通過 sourcemap 查找原始報錯信息 1. js 壓縮 js 壓縮對前端開發者來說是一門必修課。 一般來說,壓縮 js 主要出于以下兩個目的: 減小代碼體積,加快前端資源加載速度 保護源代碼不被別人獲取 壓縮 js 使用的工具庫:...
摘要:前言最近,朋友問了我這樣一個問題在中的運算結果,為什么是這樣的雖然我告訴他說,這是由于浮點數精度問題導致的。由于可以用階碼移動小數點,因此稱為浮點數。它的實現遵循標準,使用位精度來表示浮點數。 showImg(https://segmentfault.com/img/remote/1460000018981071); 前言 最近,朋友 L 問了我這樣一個問題:在 chrome 中的運算...
閱讀 3807·2021-09-23 11:32
閱讀 2472·2021-09-06 15:01
閱讀 1632·2021-08-18 10:24
閱讀 3470·2019-12-27 11:44
閱讀 3616·2019-08-30 15:52
閱讀 2524·2019-08-30 11:11
閱讀 699·2019-08-29 17:27
閱讀 610·2019-08-29 16:22