嚴格模式下this的指向問題

admin發表於2017-03-29

在ES5的嚴格模式下,this的指向有所變化,下面做一下簡單介紹。

先看一段程式碼例項:

[JavaScript] 純文字檢視 複製程式碼
var url="softwhy.com";
function func(){
  console.log(this.url);
}
func()

在非嚴格模式下,這是毫無問題的,this是指向全域性物件window。

但是在嚴格模式下這是錯誤的,程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
"use strict";
var url="softwhy.com";
function func(){
  console.log(this.url);
}
func()

上面的程式碼會報錯,Uncaught TypeError: Cannot read property 'url' of undefined

特別說明:本編輯器當前是無法測試嚴格模式下的效果。

也就說如果不使用物件呼叫方法,或者非建構函式方式使用,函式中的this不再指向全域性物件。

更多關於嚴格模式的內容可以參閱javascript嚴格模式特性簡單介紹一章節。

相關文章