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

首頁 > 編程 > JavaScript > 正文

javascript使用eval或者new Function進行語法檢查

2019-11-21 00:12:04
字體:
來源:轉載
供稿:網友
使用new Function( ) 來進行語法檢查
eval( ) 方法是不能亂用的,在不適當的時候使用eval( ) 方法可能導致整個程序都會出問題的;
而new Function( ) 就沒這么大問題。雖然new Function( ) 在任何情況下,構造的函數都是在全局作用域下直接工作的,但只作語法檢查的話,并不會因為作用域問題而產生意外結果,只要你不直接調用通過它構造的新函數。

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

使用數組對象的concat方法來產生新數組
把單個對象參數轉化為只包含一個元素的數組再來處理,可以使用“[ ].concat(o)”的形式。
例如:
復制代碼 代碼如下:

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 相比不夠嚴謹。

網友回復:
1.eval 確實不能亂用;
2.在IE eval 的時候,我的解決方法是在執行函數體內return ;
3.Array.prototype.concat.apply([1,2,3],[4,5,6]);
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 清新县| 乐东| 平罗县| 台江县| 丰城市| 娄底市| 策勒县| 汉中市| 南澳县| 金坛市| 太仆寺旗| 彭阳县| 罗甸县| 黑山县| 微山县| 衡山县| 泰州市| 龙海市| 张北县| 武邑县| 富宁县| 昔阳县| 苗栗市| 渝北区| 万荣县| 平舆县| 即墨市| 东乡族自治县| 东方市| 万安县| 紫云| 清原| 赤壁市| 和硕县| 定西市| 商洛市| 绥芬河市| 香港| 涡阳县| 上林县| 成都市|