當(dāng)前位置:
首頁(yè) >
前端技术
> javascript
>内容正文
javascript
【JavaScript】关于eval( )
生活随笔
收集整理的這篇文章主要介紹了
【JavaScript】关于eval( )
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??
一、eval()?動(dòng)態(tài)執(zhí)行時(shí)使用當(dāng)前函數(shù)的閉包。 var i = 100; function myFunc(ctx) {var i = 'test';eval('var test = "hello."'); //test執(zhí)行后為局部變量 } myFunc(); // 輸出值100 alert(i); 二、eva l()?訪問(wèn)全局閉包:1、IE內(nèi)核環(huán)境下: ? ? ? 在 Internet Explorer 中的 JScript 的 eva l() 下,無(wú) 論是使用 window.eva l 調(diào)用,還是使用 window 作為傳入的 this 實(shí)例,都不可能讓 eva l()? 得到訪問(wèn)全局閉包的能力。不過(guò) JScript 中可以使用另一種方法來(lái) 得到完全相同的效果,即在 window.execScript() 方法中執(zhí)行的代碼“總是”在 全局閉包中執(zhí)行。 // 本例建議在Internet Explorer 環(huán)境中測(cè)試 var i = 100; function myFunc() {window.execScript('i = "test"');//execScript('i = "test"'); } myFunc(); // 輸出值'test', 表明調(diào)用myFunc()時(shí)修改了全局閉包中的變量i alert(i); ? ? ? 而且, JScript ? 運(yùn)行在名為 ActiveScript 的腳本環(huán)境中,該 execScript() 方法也提 供跨腳本語(yǔ)言的代碼能力。因此也可以在第二個(gè)參數(shù)中指定語(yǔ)言的種類。 execScript('i = "test"', 'JScript'); 或 execScript('dim i = "test"', 'VBScript'); 2、非 IE內(nèi)核環(huán)境下: // 本例建議在mozilla firefox 環(huán)境中測(cè)試 var i = 100; function myFunc() {window.eval('i = "test"');//eval.call(window, 'i = "test"'); } myFunc(); // 輸出值'test', 表明調(diào)用myFunc()時(shí)修改了全局閉包中的變量i alert(i); 三、解決eval作用域的方法: with ( objContext )eval (strScript) 。?? with ( window )eval (strScript) ; //eval在 全局作用域中執(zhí)行 四、使 用eval()來(lái)獲取“對(duì)象直接量”: // 用eval()來(lái)獲取“對(duì)象直接量”的正確方法, 返回對(duì)象 alert( eval('({ name: "MyName", value: 1 })' )); //注意外層的括號(hào)({?name: "MyName",value: 1 }) 五、使用eval() 獲取匿名函數(shù): var func = eval(' (function() { })'); // 輸出'undefined' alert(typeof func); var func; eval( 'function func() { }' ); // 輸出'function' alert(typeof func); 必須使用匿名函數(shù)的情況: //var func = eval(' (function() { }).prototype.constructor '); //var func = eval('( {$:function() { }}).$'); // 或 var func = eval(' [function() { }][0]'); // 輸出'function' alert(typeof func);
轉(zhuǎn)載于:https://my.oschina.net/aram/blog/114537
總結(jié)
以上是生活随笔為你收集整理的【JavaScript】关于eval( )的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: libuv 中文编程指南(四)网络
- 下一篇: java url 授权,Spring M