摘要:的使用函數(shù)可將字符串轉(zhuǎn)換為代碼執(zhí)行,并返回一個或多個值調(diào)用時,實例為代碼的返回值的返回值遵循以下規(guī)則如果的參數(shù)不是字符串,那么將直接返回參數(shù)。錯誤將這個函數(shù)表達(dá)式解釋為函數(shù)的聲明,使得它沒有任何的返回值。
eval()的使用
eval() 函數(shù)可將字符串轉(zhuǎn)換為代碼執(zhí)行,并返回一個或多個值
eval調(diào)用時,實例為eval( "( javascript代碼 )" )
eval()的返回值
eval()的返回值遵循以下規(guī)則:
如果eval()的參數(shù)不是字符串,那么eval()將直接返回參數(shù)。
如果eval()的參數(shù)是字符串,那么eval()將這個字符串解析成代碼后進(jìn)行執(zhí)行,并返回最后一行代碼執(zhí)行的結(jié)果。
如果字符串無法解析成合法的代碼,eval()將拋出SyntaxError錯誤。
舉例1(eval的參數(shù)不是字符串):
運行結(jié)果(谷歌瀏覽器測試):
舉例2(eval的參數(shù)是字符串):
運行結(jié)果(谷歌瀏覽器測試):
當(dāng)然,如果不使用eval()方法,上面的代碼可以使用匿名函數(shù)寫
舉例3(字符串無法解析成合法的代碼):
運行結(jié)果(谷歌瀏覽器測試):此時可以看到 谷歌瀏覽器控制臺報錯
IE6/7/8不兼容
使用IE8來測試代碼:
var str = "function(){alert("Test eval")}"; var fn = eval("(" + str + ")"); fn();
沒有彈出框,控制臺報錯:
解決方法:
a)var s = "function(){alert("Test!")}";
b)var s = "0?0:function(){alert("Test!")}";
當(dāng)然這個解決方法是從國外論壇里面找到(網(wǎng)站:http://stackoverflow.com/ques...
大意是:這在JScript解釋器里面是一個bug,它不會出現(xiàn)在IE9除非你使用混雜模式或兼容來看。IE8錯誤將這個函數(shù)表達(dá)式解釋為函數(shù)的聲明,使得它沒有任何的返回值。所以你可以寫成其他比較典型的表達(dá)式,從從而在JScript解釋器中構(gòu)成一個表達(dá)式。
那么我們就知道IE6/7/8使用JScrip解釋器來解析eval()把參數(shù)當(dāng)初函數(shù)聲明,沒有返回值,所以我么可以把eval()函數(shù)里面的字符串代碼寫成一個表達(dá)式,即可以寫成:
function(){alert("Test!")} 或 0?0:function(){alert("Test!")}
改代碼:
var str = "0 ? 0 : function(){alert("Test eval")}"; var fn = eval("(" + str + ")"); fn();
在IE8里面測試結(jié)果:
最后利用ietester工具測試在IE6也同樣沒有問題。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/80780.html
摘要:最簡單的區(qū)分所有瀏覽器都會顯示為紫色會顯示紅色會變?yōu)樗{(lán)色會變?yōu)榫G色上面的樣式解釋為順序是顯示的結(jié)果用瀏覽,顏色是紫色用瀏覽,顏色是紅色用瀏覽,顏色是藍(lán)色用瀏覽,顏色是綠色支持偽元素偽元素和在及以下不支持兼容可以識別寫法和兼容則需要引 1. 最簡單的CSS Hack 區(qū)分 IE6 、 IE7 、IE8 css .color{ background-color: #CC00FF; ...
摘要:五總結(jié)和應(yīng)對方案安全性分析是否安全主要由數(shù)據(jù)源決定,如果數(shù)據(jù)源不安全,只是提供了一種攻擊方法而已。方案嚴(yán)格管控數(shù)據(jù)源。方案低頻使用時影響不大,不要高頻使用,建議尋找替代方案。方案了解直接調(diào)用和間接調(diào)用的區(qū)別,遇到問題時不要懵逼即可。 為什么要少用eval? eval是 js 中一個強大的方法。都說eval == evil等于true,這篇文章將研討eval的幾個缺點和使用注意事項。 目...
摘要:單引號與雙引號我們看到一開始的舉例中小明使用單引號來套雙引號,如果反過來寫呢,如小明相信也不少人習(xí)慣用雙引號套單引號結(jié)果使用來轉(zhuǎn)化也會報錯兼容問題瀏覽器中不支持使用方法轉(zhuǎn)成對象,所以需要引入一個文件。 相信大部分人都知道或者去百度檢索都會得到將js中的字符串轉(zhuǎn)化成json對象常見的3種方法 舉例: var str = {name:小明,age:18}; 將字符串轉(zhuǎn)化json對象: ...
摘要:面試闖關(guān)在面試過程中,總會被問到一些你用到過但是記不清一些零碎的知識,現(xiàn)在做一下總結(jié)。在兼容模式中,頁面以寬松的向后兼容的方式顯示模擬老式瀏覽器的行為以防止站點無法工作。作為對象原型鏈的終點。格式采用鍵值對,例如參考面試總結(jié) 面試闖關(guān)1 在面試過程中,總會被問到一些你用到過、但是記不清一些零碎的知識,現(xiàn)在做一下總結(jié)。 第一部分:HTML+CSS 1.常用那幾種瀏覽器測試?有哪些內(nèi)核(L...
摘要:面試闖關(guān)在面試過程中,總會被問到一些你用到過但是記不清一些零碎的知識,現(xiàn)在做一下總結(jié)。在兼容模式中,頁面以寬松的向后兼容的方式顯示模擬老式瀏覽器的行為以防止站點無法工作。作為對象原型鏈的終點。格式采用鍵值對,例如參考面試總結(jié) 面試闖關(guān)1 在面試過程中,總會被問到一些你用到過、但是記不清一些零碎的知識,現(xiàn)在做一下總結(jié)。 第一部分:HTML+CSS 1.常用那幾種瀏覽器測試?有哪些內(nèi)核(L...
閱讀 3247·2021-09-22 15:58
閱讀 1717·2019-08-30 14:17
閱讀 1716·2019-08-28 18:05
閱讀 1505·2019-08-26 13:33
閱讀 683·2019-08-26 12:20
閱讀 606·2019-08-26 12:18
閱讀 3192·2019-08-26 11:59
閱讀 1401·2019-08-26 10:36