1. 程式人生 > >從零開始學習前端JAVASCRIPT — 5、JavaScript基礎ES5

從零開始學習前端JAVASCRIPT — 5、JavaScript基礎ES5

blog rip 修正 項目 單個 方向 light console 重復

1:ES5簡介

ECMAScript 5.1 (或僅 ES5) 是ECMAScript(基於JavaScript的規範)標準的修正。 與HTML5規範進程本質類似,ES5通過對現有JavaScript方法添加語句和原生ECMAScript對象做合並實現標準化。

2:嚴格模式的意義

  相對於正常模式而言:

1:消除Javascript語法的一些不合理、不嚴謹之處,減少一些怪異行為。

2:消除代碼運行的一些不安全之處,保證代碼運行的安全。

3:提高編譯器效率,增加運行速度。

4:為未來新版本的Javascript做好鋪墊。

"嚴格模式"體現了Javascript更合理、更安全、更嚴謹的發展方向,包括IE 10在內的主流瀏覽器,都已經支持它,許多大項目已經開始全面擁抱它。

3:進入嚴格模式

進入“嚴格模式”的標誌,書寫這行語句:"use strict";

老版本的瀏覽器會把它當作一行普通字符串,加以忽略。

4:如何調用嚴格模式

"嚴格模式"有兩種調用方法,適用於不同的場合。

針對整個腳本文件:將"use strict"放在腳本文件的第一行,則整個腳本都將以"嚴格模式"運行。如果這行語句不在第一行,則無效,整個腳本以"正常模式"運行。如果不同模式的代碼文件合並成一個文件,這一點需要特別註意。

針對單個函數:將"use strict"放在函數的第一行,則整個函數以"嚴格模式"運行。

腳本文件的變通寫法:因為第一種調用方法不利於文件合並,所以更好的做法是,借用第二種方法,將整個腳本文件放在一個立即執行的匿名函數之中。

eg:

// a.js (組員a的js代碼引入嚴格模式)
/*	‘use strict‘;
	var a = 4;
	var b = 3;
	console.log(a + b);*/
// b.js(組員b的js代碼引入正常模式)
/*
	var c = 6;
	var d = 7;
	console.log(c + d);*/
//項目上線代碼合並(如果直接合並代碼,組員b的代未按照嚴格模式規範來coding,語法可能發生各種問題)。
//解決方案:將代碼分別封裝進入兩個匿名自執行函數
(function () {
	‘use strict‘;
	var a = 4;
	var b = 3;
	console.log(a + b);
})();
(function () {
	var c = 6;
	var d = 7;
	console.log(c + d);
})();

5:嚴格模式改變語法和行為

嚴格模式對Javascript的語法和行為,都做了一些改變。

1:全局變量顯式聲明。

在正常模式中,如果一個變量沒有聲明就賦值,默認是全局變量。嚴格模式禁止這種用法,全局變量必須顯式聲明。因此,嚴格模式下,變量都必須先用var命令聲明,然後再使用。

javascrip中的變量講解中函數內部不加關鍵字var定義的全局變量如果引入嚴格模式,運行程序將會檢查出語法錯誤。采用顯示聲明全局變量。

2:函數形參不允許重復。

3:禁止使用with語句。

4:禁止函數內部this關鍵字指向全局對象,this指向undefined。

5:函數必須聲明在頂層。

將來Javascript的新版本會引入“塊級作用域"。為了與新版本接軌,嚴格模式只允許在全局作用域或函數作用域的頂層聲明函數。也就是說,不允許在非函數的代碼塊內聲明函數。

// if(1){function a(){}} else {function a() {}}

從零開始學習前端JAVASCRIPT — 5、JavaScript基礎ES5