天天看點

JavaScript基礎——嚴格模式

一、嚴格模式的概念和作用

除了正常運作模式,ES5添加了第二種運作模式:“嚴格模式”。所謂嚴格模式是指聲明變量或者定義方法時應該注意規範。

嚴格模式的作用

1.消除了JS文法的一些不合理、不嚴謹之處,減少一些怪異行為;

2.消除代碼運作的一些不安全之處,保證代碼運作的安全;

3.提高編譯器效率,增加運作速度;

4.為未來新版本的JS做好鋪墊

二、嚴格模式的調用

如何進入嚴格模式?

使用這一行語句 "use strict"

不過老的浏覽器會把他當成一串普通的字元串加以忽略

嚴格模式的兩種調用方式

1.針對整個腳本檔案:将 “use strict” 放在腳本檔案的第一行,則整個腳本檔案都将以“嚴格模式”運作,

  如果這行語句不在第一行,則無效,整個腳本以“正常模式”運作。

  如果不同模式的代碼檔案合并成一個檔案,這一點需要特别注意。

2.針對單個函數:将 “use strict” 放在函數的第一行,則整個函數以“嚴格模式”運作。

腳本檔案的變通寫法:因為第一種調用方式不利于檔案合并,是以更好的做法是,借用第二種方法,将整個腳本檔案放在一個立即執行的匿名函數中

匿名函數:不需要調用,直接執行,可以自調用

(functiob(){
    	"use strict";
        console.log(1);
    })()
           

三、進入嚴格模式後發生的變化

1、全局變量聲明時,必須加關鍵字var

正常模式

a=20;
	console.log(a)//20
           

嚴格模式

"use strict";
	a=20;
	console.log(a);//a is not defined,是以聲明時要加var
           

2、函數内不允許出現重名參數

正常模式

function fn(a,b,b){
	console.log(a,b)
	}
	fn(1,2,3)//1,3
           

嚴格模式

"use strict";
	function fn(a,b,b){
	console.log(a,b)
	}
	fn(1,2,3)//報錯
           

3、arguments對象不允許被動态改變

正常模式

function fn(a){
	a=20;
	console.log(a)//20
	console.log(arguments[0])//20
	}
	fn(10)
           

嚴格模式

"use strict";
	function fn(a){
	a=20;
	console.log(a)//20
	console.log(arguments[0])//10
	}
	fn(10)
           

4、this無法指向全局對象

正常模式

function fn(){
	console.log(this);//window
	}
	fn()
           

嚴格模式

"use strict";
	function fn(){
	console.log(this)//undefined
	}
	fn()
           

以上是對嚴格模式的了解,如果文章中對知識點的了解有片面或者錯誤的地方,歡迎批評指正