English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JavaScript基础教程

JavaScript 对象

JavaScript 函数

JS HTML DOM

JS 浏览器BOM

AJAX 基础教程

JavaScript 参考手册

Modo strict (use strict) JavaScript

ECMAScript 5中引入的JavaScript严格模式是选择加入 JavaScript受限变体的一种方式。

严格模式不仅仅是一个子集:它有意地具有与普通代码不同的语义。

严格模式使编写“安全” JavaScript更加容易。

严格模式将以前接受的“错误语法”更改为实际错误。

在严格模式下,例如,您不能使用未声明的变量。

调用严格模式

严格模式是通过"use strict";在脚本或函数的开头添加来声明的。

要为整个脚本调用严格模式,在任何其他任何声明之前,输入语句“use strict” ::

"use strict";
str = "嗨,我是严格模式脚本!"; // 导致错误,因为未声明str
Prova a vedere‹/›

Per abilitare la modalità stricta per una chiamata di funzione, posizionare la frase esatta "use strict" nel corpo della funzione, e metterla prima di qualsiasi altra istruzione:

function myFunc() {
  // Sintassi di modalità stricta a livello di funzione
  "use strict";
  str = "大家好,我是严格模式函数!"; // Questo causerà un errore
  return str;
}
Prova a vedere‹/›

La modalità stricta può aiutarti a scrivere codice più pulito, ad esempio prevenendo l'uso di variabili non dichiarate.

L'instruzione "use strict" è riconosciuta solo all'inizio di uno script o di una funzione.

Sia la sintassi con virgolette singole che con virgolette doppi è accettabile ('use strict' o "use strict";).

Limitazioni comuni in modalità stricta

Come noto, in modalità stricta, è necessario dichiarare tutte le variabili.

Se si assegna un valore a un identificatore che non è una variabile dichiarata, viene sollevato un ReferenceError:

"use strict";
x = 5; // ReferenceError: x non è definito
Prova a vedere‹/›

Non è permesso utilizzare oggetti non dichiarati (gli oggetti sono anche variabili):

"use strict";
coord = {x:10, y:20}; // ReferenceError: coord non è definito
Prova a vedere‹/›

In modalità stricta, se si tenta di eliminare una variabile, viene sollevato un errore di sintassi:

"use strict";
var msg = "Hello World";
delete msg; // SyntaxError
Prova a vedere‹/›

Allo stesso modo, quando si tenta di eliminare una funzione in modalità stricta, si verifica un errore di sintassi:

"use strict";
function sum(a, b) {
return a + b;
}
delete sum; // SyntaxError
Prova a vedere‹/›

In modalità stricta, non è permesso utilizzare nomi di parametri duplicati:

"use strict";
function square(a, a) { // SyntaxError
return a * a;
}
Prova a vedere‹/›

In modalità stricta, non è permesso scrivere attributi readonly:

"use strict";
var person = {name: "Akash", age: 22};
Object.defineProperty(person, "gender", {value: "male", writable: false});
person.gender = "female"; // TypeError
Prova a vedere‹/›

In modalità stricta, non è permesso utilizzare la clausola with:

"use strict";
with (Math) { x = sqrt(25); }; // SyntaxError
Prova a vedere‹/›

In modalità stricta, non è permesso utilizzare numeri ottali:

"use strict";
var x = 010; // SyntaxError
Prova a vedere‹/›

Per motivi di sicurezza,eval()Non è permesso creare variabili all'interno della portata di chiamata della funzione che le crea:

"use strict";
eval("var x = 10;");
console.log(x); // ReferenceError: il variabile x non è definito
Prova a vedere‹/›

La stringa "eval" non può essere usata come identificatore (nome variabile):

"use strict";
var eval = "oldtoolbag.com"; // SyntaxError
Prova a vedere‹/›

La stringa "arguments" non può essere usata come identificatore (nome variabile):

"use strict";
var arguments = "oldtoolbag.com"; // SyntaxError
Prova a vedere‹/›

Pavimentare la strada per le future versioni di ECMAScript

Le versioni future di ECMAScript potrebbero introdurre nuove sintassi, la modalità strict di ES5 applicherà alcune limitazioni per semplificare il passaggio.

Sebbene sia più facile fare alcune modifiche sulla base di queste modifiche proibite in modalità strict:

In modalità strict, la seguente lista di identificatori diventa riservata:

  • implements

  • interface

  • let

  • package

  • private

  • protected

  • public

  • static

  • yield

"use strict";
var package = true; // Questo causerà un errore
Prova a vedere‹/›