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

Tutorial básico de JavaScript

Objeto de JavaScript

Función de JavaScript

JS HTML DOM

BOM del navegador JS

Tutorial básico de AJAX

Manual de referencia de JavaScript

Modo estricto (use strict) de JavaScript

ECMAScript 5El modo estricto introducido en JavaScript esElección de entrada Una forma de variante restringida de JavaScript.

El modo estricto no es solo un subconjunto: tiene un significado intencionalmente diferente al código común.

El modo estricto facilita la escritura de JavaScript "seguro".

El modo estricto cambia de "error de sintaxis" aceptado anteriormente a un error real.

En modo estricto, por ejemplo, no se puede usar variables no declaradas.

Llamar al modo estricto

El modo estricto se declara agregando "use strict" al principio de un script o función.

Para llamar al modo estricto en todo el script, introduce la declaración "use strict" antes de cualquier otra declaración:

"use strict";
str = "嗨,我是严格模式脚本!";  // Genera un error porque str no está declarado
Prueba para ver‹/›

Para llamar al modo estricto en una función, coloca la declaración exacta "use strict" en el cuerpo de la función, antes de cualquier otra declaración:

function myFunc() {
  // Sintaxis de modo estricto a nivel de función
  "use strict";
  str = "大家好,我是严格模式函数!";  // Esto causará un error
  return str;
}
Prueba para ver‹/›

El modo estricto puede ayudarte a escribir código más limpio, por ejemplo, evitando el uso de variables no declaradas.

La instrucción "use strict" solo se reconoce al principio de un script o función.

La sintaxis de comillas simples y dobles es aceptable ('use strict'; o "use strict";).

Limitaciones comunes en modo estricto

Como sabes, en modo estricto, es necesario declarar todas las variables.

Si se asigna un valor a un identificador que no es una variable declarada, se generará un ReferenceError:

"use strict";
x = 5; // ReferenceError: x no está definido
Prueba para ver‹/›

No se permite el uso de objetos no declarados (los objetos también son variables):

"use strict";
coord = {x:10, y:20});   // ReferenceError: coord no está definido
Prueba para ver‹/›

En modo estricto, si se intenta eliminar una variable, se lanzará un error de sintaxis:

"use strict";
var msg = "Hello World";
delete msg;// SyntaxError
Prueba para ver‹/›

Del mismo modo, al intentar eliminar una función en modo estricto, se producirá un error de sintaxis:

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

En modo estricto, no se permite el nombre de parámetros repetidos:

"use strict";
function square(a, a) {  // SyntaxError
return a * a;
}
Prueba para ver‹/›

En modo estricto, no se permite la escritura de propiedades de solo lectura:

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

En modo estricto, no se permite el uso de la declaración with:

"use strict";
with(Math){x = sqrt(25);   // SyntaxError
Prueba para ver‹/›

En modo estricto, no se permite el uso de números octales:

"use strict";
var x = 010;   // SyntaxError
Prueba para ver‹/›

Por razones de seguridad,eval()No se permite crear variables en el ámbito de la llamada:

"use strict";
eval("var x = ", 10;
console.log(x);   // ReferenceError: La variable x no está definida
Prueba para ver‹/›

La cadena "eval" no se puede usar como identificador (nombre de variable):

"use strict";
var eval = "oldtoolbag.com";// SyntaxError
Prueba para ver‹/›

La cadena "arguments" no se puede usar como identificador (nombre de variable):

"use strict";
var arguments = "oldtoolbag.com";// SyntaxError
Prueba para ver‹/›

Pavimentando el camino para futuras versiones de ECMAScript

Las versiones futuras de ECMAScript pueden introducir nuevas sintaxis, ES5El modo estricto de JavaScript aplica algunas limitaciones para simplificar la transición.

Si se permite realizar algunos cambios en la base, es más fácil realizar algunas modificaciones.

En modo estricto, la lista de identificadores siguientes se convierte en palabras reservadas:

  • implements

  • interface

  • let

  • package

  • private

  • protected

  • public

  • static

  • yield

"use strict";
var paquete = true;  // Esto causará un error
Prueba para ver‹/›