在使用eval時,我們可能會遇到一些問題,其中之一就是它不能正確識別jQuery。具體原因是因為在解析字符串時,eval函數不會自動載入當前環境的任何變量。而在jQuery中,$是一個全局變量,因此在eval函數中使用時,會報錯
var str = '$("p").hide()';
eval(str); // 報錯:Uncaught ReferenceError: $ is not defined
為了解決這個問題,我們可以使用Function()來代替eval函數。因為Function函數在內部自動創建了一個函數作用域,可以識別全局變量。
var str = '$("p").hide()';
var func = new Function(str);
func(); // 正確執行
當然,我們也可以在eval函數中自定義一個$變量,將jQuery對象引用給它
var str = '$("p").hide()';
eval('var $ = jQuery;' + str); // 正確執行
總之,在使用eval函數時,一定要注意它的局限性,避免出現意想不到的錯誤。
下一篇怎么用用js調用css