window.eval()和eval()的區別

admin發表於2017-03-31

很多朋友認為window.eval()和eval()是完全相同的,其實並非如此,下面就通過程式碼例項做一下簡單介紹。

下面先來看一段程式碼例項:

[JavaScript] 純文字檢視 複製程式碼
var antzone="螞蟻部落";
var age=2;
function func(){
  eval("var antzone='分享互助';");
  eval("age=3");
  console.log(antzone);
  console.log(age);
}
func();
console.log(antzone);
console.log(age);

從程式碼輸出值來看,eval()的執行環境是由它本身所在的位置決定的,所建立變數的作用域和普通方式建立變數的規則是一樣的。

再來看一段程式碼:

[JavaScript] 純文字檢視 複製程式碼
var antzone="螞蟻部落";
var age=2;
function func(){
  window.eval("var antzone='分享互助';");
  window.eval("age=3");
  console.log(antzone);
  console.log(age);
}
func();
console.log(antzone);
console.log(age);

上面的程式碼是採用window.eval()方法,這個時候,執行結果就和上面的程式碼有所差異了,總結如下:

(1).window.eval()方法在IE8以上或者其他標準瀏覽器中,window.eval()所建立的執行環境是全域性的。

(2).在IE8和IE8以下瀏覽器中,window.eval()和eval()完全相同。

相關文章