JavaScript菜鳥(niǎo)教程

JavaScript 對(duì)象

JavaScript 函數(shù)

JS HTML DOM

JS 瀏覽器BOM

AJAX 菜鳥(niǎo)教程

JavaScript 參考手冊(cè)

JavaScript 嚴(yán)格模式(use strict)

ECMAScript 5中引入的JavaScript嚴(yán)格模式是選擇加入 JavaScript受限變體的一種方式。

嚴(yán)格模式不僅僅是一個(gè)子集:它有意地具有與普通代碼不同的語(yǔ)義。

嚴(yán)格模式使編寫(xiě)“安全” JavaScript更加容易。

嚴(yán)格模式將以前接受的“錯(cuò)誤語(yǔ)法”更改為實(shí)際錯(cuò)誤。

在嚴(yán)格模式下,例如,您不能使用未聲明的變量。

調(diào)用嚴(yán)格模式

嚴(yán)格模式是通過(guò)"use strict";在腳本或函數(shù)的開(kāi)頭添加來(lái)聲明的。

要為整個(gè)腳本調(diào)用嚴(yán)格模式,在任何其他任何聲明之前,輸入語(yǔ)句“use strict” ::

"use strict";
str = "嗨,我是嚴(yán)格模式腳本!";  // 導(dǎo)致錯(cuò)誤,因?yàn)槲绰暶鱯tr
測(cè)試看看?/?

要為函數(shù)調(diào)用嚴(yán)格模式,請(qǐng)將確切的語(yǔ)句"use strict";放在函數(shù)的主體中,然后放在其他任何語(yǔ)句之前:

function myFunc() {
  // 函數(shù)級(jí)嚴(yán)格模式語(yǔ)法
  "use strict";
  str = "大家好,我是嚴(yán)格模式函數(shù)!";  // 這將導(dǎo)致一個(gè)錯(cuò)誤
  return str;
}
測(cè)試看看?/?

嚴(yán)格模式可以幫助您編寫(xiě)更簡(jiǎn)潔的代碼,例如防止使用未聲明的變量。

該"use strict"指令只能在腳本或函數(shù)的開(kāi)頭識(shí)別。

單引號(hào)和雙引號(hào)語(yǔ)法都是可以接受的('use strict';或"use strict";)。

嚴(yán)格模式下的常見(jiàn)限制

如您所知,在嚴(yán)格模式下,必須聲明所有變量。

如果將值分配給不是聲明變量的標(biāo)識(shí)符,則將引發(fā)ReferenceError:

"use strict";
x = 5; // ReferenceError: x 沒(méi)有定義
測(cè)試看看?/?

不允許使用未聲明的對(duì)象(對(duì)象也是變量):

"use strict";
coord = {x:10, y:20};   // ReferenceError: coord 沒(méi)有定義
測(cè)試看看?/?

在嚴(yán)格模式下,如果嘗試刪除變量,則會(huì)拋出語(yǔ)法錯(cuò)誤:

"use strict";
var msg = "Hello World";
delete msg;// SyntaxError
測(cè)試看看?/?

同樣,當(dāng)您嘗試在嚴(yán)格模式下刪除函數(shù)時(shí),會(huì)出現(xiàn)語(yǔ)法錯(cuò)誤:

"use strict";

function sum(a, b) {
return a + b;
}

delete sum;// SyntaxError
測(cè)試看看?/?

在嚴(yán)格模式下,不允許重復(fù)參數(shù)名稱(chēng):

"use strict";

function square(a, a) {  // SyntaxError
return a * a;
}
測(cè)試看看?/?

在嚴(yán)格模式下,不允許寫(xiě)入只讀屬性:

"use strict";
var person = {name: "Akash", age: 22};
Object.defineProperty(person, "gender", {value: "male", writable: false});

person.gender = "female";   // TypeError
測(cè)試看看?/?

在嚴(yán)格模式下,不允許使用with語(yǔ)句:

"use strict";
with (Math){x = sqrt(25)};   // SyntaxError
測(cè)試看看?/?

在嚴(yán)格模式下,不允許使用八進(jìn)制數(shù)字:

"use strict";
var x = 010;   // SyntaxError
測(cè)試看看?/?

出于安全原因,eval()不允許在調(diào)用它的范圍內(nèi)創(chuàng)建變量:

"use strict";

eval("var x = 10;");
console.log(x);   // ReferenceError: x 變量沒(méi)有定義
測(cè)試看看?/?

字符串“eval”不能用作標(biāo)識(shí)符(變量名):

"use strict";
var eval = "(cainiaoplus.com)";// SyntaxError
測(cè)試看看?/?

字符串“arguments”不能用作標(biāo)識(shí)符(變量名):

"use strict";
var arguments = "(cainiaoplus.com)";// SyntaxError
測(cè)試看看?/?

為將來(lái)的ECMAScript版本鋪平道路

將來(lái)的ECMAScript版本可能會(huì)引入新的語(yǔ)法,ES5中的嚴(yán)格模式會(huì)應(yīng)用一些限制以簡(jiǎn)化過(guò)渡。

如果在嚴(yán)格模式中禁止這些更改的基礎(chǔ),則更容易進(jìn)行一些更改。

在嚴(yán)格模式下,以下標(biāo)識(shí)符列表成為保留關(guān)鍵字:

  • implements

  • interface

  • let

  • package

  • private

  • protected

  • public

  • static

  • yield

"use strict";
var package = true;  // This will cause an error
測(cè)試看看?/?
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清