日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在IE下,当eval遇上function

發布時間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在IE下,当eval遇上function 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在IE下,當eval遇上function,IE下會出現怪異情況,我們用例子一步步說明

情況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();//所有瀏覽器正常輸出


轉載于:https://my.oschina.net/liangzhenghui/blog/213519

總結

以上是生活随笔為你收集整理的在IE下,当eval遇上function的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。