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

antzone發表於2017-04-10

雖然按照通常的理論,window物件的屬性或者方法,是不是用window物件呼叫是都是一樣的。

但是對於eval()方法來說確實是有很大區別。

下面就來介紹一下它的區別:

eval()所執行的程式碼是在它所在的作用域執行。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
var func = function (){
  eval("var index=5");
  console.log(index);
}
func();
console.log(index)

從上面的程式碼可以看出,eval()所執行程式碼是在eval()所在作用域執行的。

window.eval()所執行的程式碼實在全域性作用域執行的。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
var func = function () {
  window.eval("var index=5");
  console.log(index);
}
func();
console.log(index)

上面的程式碼會輸出兩個5,說明window.eval()是在全域性作用域下執行的。

在IE8和IE8以下瀏覽器中,window.eval()和eval()完全相同的,參閱javascript的eval()函式作用域簡單介紹一章節

相關文章