亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

javascript使用eval或者new Function進(jìn)行語(yǔ)法檢查

 更新時(shí)間:2010年10月16日 00:43:12   作者:  
使用代碼來(lái)實(shí)現(xiàn)分析代碼的語(yǔ)法,這是一件極其痛苦的事情。簡(jiǎn)單的解決辦法是:使用腳本引擎自己的語(yǔ)法檢查,比方說(shuō)eval( ) 或者new Function( )。
使用new Function( ) 來(lái)進(jìn)行語(yǔ)法檢查
eval( ) 方法是不能亂用的,在不適當(dāng)?shù)臅r(shí)候使用eval( ) 方法可能導(dǎo)致整個(gè)程序都會(huì)出問(wèn)題的;
而new Function( ) 就沒(méi)這么大問(wèn)題。雖然new Function( ) 在任何情況下,構(gòu)造的函數(shù)都是在全局作用域下直接工作的,但只作語(yǔ)法檢查的話,并不會(huì)因?yàn)樽饔糜騿?wèn)題而產(chǎn)生意外結(jié)果,只要你不直接調(diào)用通過(guò)它構(gòu)造的新函數(shù)。

在eval( ) 接受的參數(shù)前面增加“0,”
其實(shí)這是由于IE中存在一個(gè)bug。出于某種原因,如果你在IE 中想通過(guò)調(diào)用eval( ) 來(lái)動(dòng)態(tài)地構(gòu)造一個(gè)函數(shù)。
例如:
eval('(function(){ /* code here */ })');
在IE 中得到的返回將是undefined,而其它瀏覽器則會(huì)正確地返回這個(gè)新構(gòu)造的函數(shù)的引用。
最簡(jiǎn)單有效的解決辦法是:在前邊加上“0,”,這樣就能在所有主流瀏覽器中兼容。
例如:
eval('0,function(){ /* code here */ }');
注:在IE9 的Chakra 引擎中,這個(gè)問(wèn)題已經(jīng)解決。

使用數(shù)組對(duì)象的concat方法來(lái)產(chǎn)生新數(shù)組
把單個(gè)對(duì)象參數(shù)轉(zhuǎn)化為只包含一個(gè)元素的數(shù)組再來(lái)處理,可以使用“[ ].concat(o)”的形式。
例如:
復(fù)制代碼 代碼如下:

var arr1 = [1,2];
var arr2 = [3,4];
var arr3 = arr1.concat(arr2);
alert(arr3.length);


另一種方式是:if (!(o instanceof Array)) o = [o];
// 和ECMAScript 5 中的isArray 相比不夠嚴(yán)謹(jǐn)。

網(wǎng)友回復(fù):
1.eval 確實(shí)不能亂用;
2.在IE eval 的時(shí)候,我的解決方法是在執(zhí)行函數(shù)體內(nèi)return ;
3.Array.prototype.concat.apply([1,2,3],[4,5,6]);

相關(guān)文章

最新評(píng)論