亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

imtianx / 2808人閱讀

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

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

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

然而,eval 函數(shù)只有在當前作用域中直接被調(diào)用并且被調(diào)用的函數(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ù)的使用應(yīng)該被避免,99.9% 使用 eval 函數(shù)所實現(xiàn)的功能都可以通過不使用 eval 函數(shù)來實現(xiàn)。

偽裝的 eval 函數(shù)

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

安全問題

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

總結(jié)

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

  

參考

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

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

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/78096.html

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

    senntyou 評論0 收藏0

發(fā)表評論

0條評論

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