国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

IE 當eval遇上function的處理

2019-11-20 23:43:22
字體:
來源:轉載
供稿:網友
情況1:eval里沒有function,直接執行:
eval("alert('ss');");//所有瀏覽器正確均輸出
情況2:eval里有function,function立即執行:
eval("(function(){alert('ss');})();");//所有瀏覽器正確輸出
情況3:eval里有function,使用變量保存function引用并調用該function:
var f=eval("(function(){alert('ss');})");
f();//IE下報錯:缺少對象 其他瀏覽器正常
當在eval定義一個function并返回給變量時,IE報錯:缺少對象。可見IE下eval里定義的function并不能成功返回到eval外部。

解決方法:使function對象作為一個執行結果返回:

方法1:

var f=eval("(function(){ return function(){alert('ss');}})()");
f();//所有瀏覽器正確輸出
eval里調用一個立即執行的函數,該函數執行之后返回一個function對象,此時該function對象的引用成功返回到外部變量。

方法2:

var f=eval("(false||function(){alert('ss');})");
f();//所有瀏覽器成功輸出
該方法也是jquery里使用的方法,function作為或表達式的執行結果返回,同樣能成功解決問題。當然,表達式并不局限于上面的false||function(){},各種表達式只要能成功返回function,均可解決問題:

/* 與表達式:*/
var f=eval("(true&&function(){alert('ss');})");
f();//所有瀏覽器正常輸出

/* 三元表達式:*/
var f=eval("(true?function(){alert('ss');}:'');");
f();//所有瀏覽器正常輸出
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 滦平县| 电白县| 横峰县| 宝清县| 丹东市| 南昌市| 米易县| 万州区| 内乡县| 无极县| 岳普湖县| 洞头县| 尼木县| 铜陵市| 衢州市| 榕江县| 广饶县| 衢州市| 肥城市| 福鼎市| 天长市| 宁陕县| 衡南县| 泾川县| 罗源县| 教育| 安岳县| 栾城县| 中江县| 班戈县| 茂名市| 台东市| 加查县| 海淀区| 忻城县| 海安县| 柳州市| 克山县| 基隆市| 泸水县| 恩施市|