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

JavaScript basic tutorial

JavaScript object

JavaScript function

JS HTML DOM

JS browser BOM

AJAX basic tutorial

JavaScript reference manual

Modo Estrito (use strict) do JavaScript

ECMAScript 5The strict mode introduced in JavaScript isOpt-in One way to limit the variant of JavaScript.

Strict mode is not just a subset: it has different semantics intentionally different from regular code.

Strict mode makes it easier to write 'safe' JavaScript.

Strict mode changes the previously accepted 'error syntax' to actual errors.

Under strict mode, for example, you cannot use undeclared variables.

Chamar o modo estrito

O modo estrito é declarado adicionando "use strict" no início de um script ou função.

Para chamar o modo estrito para todo o script, insira a declaração "use strict" antes de qualquer outra declaração:

"use strict";
str = "Olá, eu sou um script em modo estrito!";  // Causará um erro, porque str não foi declarada
Teste e Veja‹/›

Para chamar o modo estrito para uma função, coloque a declaração exata "use strict" no corpo da função, antes de qualquer outra declaração:

function myFunc() {
  // Sintaxe do modo estrito de nível de função
  "use strict";
  str = "Olá a todos, eu sou uma função em modo estrito!";  // Isso causará um erro
  return str;
}
Teste e Veja‹/›

O modo estrito pode ajudar a escrever código mais limpo, por exemplo, prevenindo o uso de variáveis não declaradas.

A instrução "use strict" pode ser reconhecida apenas no início de um script ou função.

A sintaxe com aspas simples e duplas é aceitável (39;use strict&39; ou "use strict";).

Restrições comuns do modo estrito

Como você sabe, em modo estrito, é necessário declarar todas as variáveis.

Se atribuir um valor a um identificador que não é uma variável declarada, será lançado um ReferenceError:

"use strict";
x = 5; // ReferenceError: x não está definido
Teste e Veja‹/›

Não é permitido usar objetos não declarados (os objetos também são variáveis):

"use strict";
coord = {x:10, y:20});   // ReferenceError: coord não está definido
Teste e Veja‹/›

Em modo estrito, se tentar deletar uma variável, será lançado um erro de sintaxe:

"use strict";
var msg = "Hello World";
delete msg;// SyntaxError
Teste e Veja‹/›

Da mesma forma, ao tentar deletar uma função em modo estrito,会出现语法错误:

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

Em modo estrito, não é permitido repetir nomes de parâmetros:

"use strict";
function square(a, a) {  // SyntaxError
return a * a;
}
Teste e Veja‹/›

Em modo estrito, não é permitido escrever atributos somente leitura:

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

Em modo estrito, não é permitido usar a declaração with:

"use strict";
com (Math) {x = sqrt(25);   // SyntaxError
Teste e Veja‹/›

Em modo estrito, não é permitido usar números octais:

"use strict";
var x = 010;   // SyntaxError
Teste e Veja‹/›

Por razões de segurança,eval()Não é permitido criar variáveis dentro do escopo de chamada:

"use strict";
eval("var x = ", 10;
console.log(x);   // ReferenceError: x variável não está definida
Teste e Veja‹/›

A string "eval" não pode ser usada como identificador (nome de variável):

"use strict";
var eval = "oldtoolbag.com";// SyntaxError
Teste e Veja‹/›

A string "arguments" não pode ser usada como identificador (nome de variável):

"use strict";
var arguments = "oldtoolbag.com";// SyntaxError
Teste e Veja‹/›

Pavimentando o caminho para versões futuras do ECMAScript

Versões futuras do ECMAScript podem introduzir novas sintaxes, ES5O modo estrito aplica algumas restrições para simplificar a transição.

Se a base para proibir essas alterações no modo estrito for fácil, algumas alterações podem ser feitas mais facilmente.

Em modo estrito, a seguinte lista de identificadores se torna palavras-chave reservadas:

  • implements

  • interface

  • let

  • package

  • private

  • protected

  • public

  • static

  • yield

"use strict";
var package = true;  // Isso causará um erro
Teste e Veja‹/›