国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

細說 Javascript 拾遺篇(一) : 遠離 eval 函數(shù)

imtianx / 2757人閱讀

摘要:然而,函數(shù)只有在當前作用域中直接被調用并且被調用的函數(shù)名為才會被執(zhí)行。在全局作用域下,這個字符串會一直被執(zhí)行,在這個情形下我們并沒有直接調用函數(shù),也可以執(zhí)行字符串。總結函數(shù)應該盡可能地避免使用。

Javascripteval 函數(shù)可以在當前作用域執(zhí)行一段包含 Javascript 代碼的字符串。

var foo = 1;
function test() {
    var foo = 2;
    eval("foo = 3");
    return foo;
}
test(); // 3
foo; // 1

然而,eval 函數(shù)只有在當前作用域中直接被調用并且被調用的函數(shù)名為 eval 才會被執(zhí)行。

var foo = 1;
function test() {
    var foo = 2;
    var bar = eval;
    bar("foo = 3");
    return foo;
}
test(); // 2
foo; // 3

eval 函數(shù)的使用應該被避免,99.9% 使用 eval 函數(shù)所實現(xiàn)的功能都可以通過不使用 eval 函數(shù)來實現(xiàn)。

偽裝的 eval 函數(shù)

定時函數(shù) setTimeoutsetInterval 函數(shù)都可以接受字符串作為自己的第一個參數(shù)。在全局作用域下,這個字符串會一直被執(zhí)行,在這個情形下我們并沒有直接調用 eval 函數(shù),也可以執(zhí)行字符串。

安全問題

eval 函數(shù)毫無疑問將會造成安全問題,因為它會執(zhí)行任何傳給它的字符串,所以永遠不要對未知或未信任源傳來的字符串使用 eval 函數(shù)。

總結

eval 函數(shù)應該盡可能地避免使用。任何使用 eval 函數(shù)的代碼都應該被質疑。我覺得 @justjavac 前輩在 《js中eval()函數(shù)的用處?》 問題中的回答總結的很好,那就是“學習 eval 函數(shù),并遠離 eval 函數(shù)”。

  

參考

http://bonsaiden.github.io/JavaScript-Garden/#core.eval

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/78096.html

相關文章

  • 細說 Javascript 遺篇(四) : setTimeout 和 setInterval

    摘要:當間隔時間設置較小時,將會導致回調函數(shù)堆積。處理可能阻塞的代碼最簡單且最可控的方式就是在回調函數(shù)內部使用函數(shù)。但是很明顯,由于指定最大值的限制,還會有定時器沒有被清除掉。另外,盡量避免使用函數(shù),從而避免可能導致的回調函數(shù)堆積現(xiàn)象。 由于 Javascript 是異步的,因此我們可以通過 setTimeout 和 setInterval 函數(shù)來指定特定時間執(zhí)行代碼。 function ...

    wangjuntytl 評論0 收藏0
  • 細說 Javascript 遺篇(二) : undefined 和 null

    摘要:有兩個可以表示空的值,分別是和,比較有作用的是前者。訪問聲明但未初始化的變量。有返回值時函數(shù)的表達式沒有顯式的返回任何內容。然而,為了比較其他變量和值,我們需要提前取得的值。因此,從標準實行后,全局變量已經是不再可寫。 Javascript 有兩個可以表示空的值,分別是 undefined 和 null,比較有作用的是前者。 undefined undefined 是一種值為 un...

    My_Oh_My 評論0 收藏0
  • 細說 Javascript 遺篇(三) : 自動插入分號

    摘要:此時會自動插入分號,解析器將再次嘗試。工作原理下面的代碼沒有分號,因此解析器將會自己判斷在哪些地方插入分號。前置小括號在有前置小括號的情形時,解析器將不會自動插入分號。這不僅將保證代碼整體的一致性,也將有效地避免解析器對代碼行為的錯誤改變。 盡管 Javascript 有類似 C 的句法風格,但是它并不強制在代碼中使用分號,所以分號可能被省略。Javascript 并不是一個缺少分號的...

    mushang 評論0 收藏0
  • 細說 js 壓縮、sourcemap、通過 sourcemap 查找原始報錯信息

    摘要:文件就是記錄了從源代碼文件到壓縮文件的一個代碼對應關系記錄表,通過壓縮文件和文件可以原原本本找出源代碼文件。 細說 js 壓縮、sourcemap、通過 sourcemap 查找原始報錯信息 1. js 壓縮 js 壓縮對前端開發(fā)者來說是一門必修課。 一般來說,壓縮 js 主要出于以下兩個目的: 減小代碼體積,加快前端資源加載速度 保護源代碼不被別人獲取 壓縮 js 使用的工具庫:...

    douzifly 評論0 收藏0
  • 「干貨」細說 Javascript 中的浮點數(shù)精度丟失問題(內附好課推薦)

    摘要:前言最近,朋友問了我這樣一個問題在中的運算結果,為什么是這樣的雖然我告訴他說,這是由于浮點數(shù)精度問題導致的。由于可以用階碼移動小數(shù)點,因此稱為浮點數(shù)。它的實現(xiàn)遵循標準,使用位精度來表示浮點數(shù)。 showImg(https://segmentfault.com/img/remote/1460000018981071); 前言 最近,朋友 L 問了我這樣一個問題:在 chrome 中的運算...

    senntyou 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<