IE 當eval遇上function的處理

2022-10-07 12:21:06 字數 1012 閱讀 6490

情況1:eval裡沒有function,直接執行:

eval("alert('ss');");//所有瀏覽器正確均輸出

情況2:eval裡有function,function立即執行:

eval("(function())();");//所有瀏覽器正確輸出

情況3:eval裡有function,使用變數儲存functionwww.cppcns.com引用並呼叫該function:

var f=eval("(function())");

f();//ie下報錯:缺少物件 其他瀏覽器正常

當在eval定義乙個function並返回給變數時,ie報錯:缺少物件。可見ie下eval裡定義的function並不能成功返回到eval外部。

解決方法:使function物件作為乙個執行結果返回:

方法1:

var f=eval("(function()})()");

f();//所有瀏覽器正確輸出

eval裡呼叫乙個立即執行的函式,該函式執行程式設計客棧之後返回乙個function物件,此時該function物件的引用成功返回到外部變數。

方法2:

var f=eval("(false||function())");

f();//所有瀏覽器成功輸出

該方法也是jquery裡使用的方法,function作為或表示式的執行結果返回,同樣能成功解決問題。當然,表示式並不侷限於上面的false||function(){},各種表示式只要能成功返回function,均可解決問題:程式設計客棧

/* 與表示式:*/

var f=eval("(true&&function())");

f();//所有瀏覽器正常輸出

/* 三元表示式:www.cppcns.com*/

var f=eval("(true?function():'');");

f();//所有瀏覽器正常輸出

本文標題: ie 當eval遇上function的處理

本文位址:

《當阿呆遇上阿瓜》 當鐵鍬遇上石頭

該片是金 凱瑞成名之前在1994年給影迷奉獻的搞怪喜劇片 阿呆與阿瓜 的續集,說是續集,其實是前傳。新線公司讓我們足足等了10年才看到續集,然而此時影片的主創人員全部更換。少了金 凱瑞,似乎再沒有理由讓我們更期待看到這部影片。可別說筆者心態不正,筆者之所以看此片僅僅因為想看看新線公司是如何挖這塊金礦...

當技術遇上管理

哈佛商學院教授戴維 蓋兒文總結說過 我們的時間應該花在設計和除bug上,而不是不停地與上司打交道,或者監督別人的工作。作為乙個技術人員管理者,要麼你的技術能力徹底讓人信服,要麼你的想法與綜合能力高人一籌,而且還得顯得比手下的人要忙,不然誰心甘情願服從你的安排。很不巧,國內大多數公司裡,有些人的存在,...

當敏捷遇上銷售

在文章 敏捷與銷售 我的第一支scrum銷售團隊 中,對於大家經常關心的問題 是否能將銷售團隊做成敏捷的以及如何推動變革?銷售經理 eric krisfelt給出了自己的解答。他詳細描述了如何在銷售組織中實現scrum的步驟,並展示給大家非工程師團隊如何變成有自組織意識的敏捷團隊。在開始過渡之前,e...