Articles

JavaScript «use strict»

'use strict'; indica que el código JavaScript debe ejecutarse en ‘modo estricto’. Esto facilita la escritura de un código JavaScript bueno y seguro. Por ejemplo,

myVariable = 9;

Aquí, miVariable se crea sin declarar. Esto funciona como una variable global en JavaScript. Sin embargo, si se utiliza en modo estricto, el programa arrojará un error. Por ejemplo,

'use strict';// ErrormyVariable = 9;

El código anterior arroja un error porque miVariable no está declarada. En modo estricto, no se puede utilizar la variable sin declararlas.

Para indicar que este programa está en modo estricto, hemos utilizado

'use strict';

en la parte superior del programa.

Puedes declarar el modo estricto añadiendo 'use strict'; o "use strict"; al principio de un programa.

Cuando declaras el modo estricto al principio de un programa, éste tendrá alcance global y todo el código del programa se ejecutará en modo estricto.

Modo estricto en la variable

En el modo estricto, utilizar una variable sin declararla arroja un error.

Nota: Es necesario declarar el modo estricto al principio del programa. Si declaras el modo estricto debajo de algún código, no funcionará.

Por ejemplo,

console.log("some code");// 'use strict' is ignored// must be at the top"use strict";x = 21; // does not throw an error

Modo estricto en función

También puedes usar el modo estricto dentro de una función. Por ejemplo,

myVariable = 9;console.log(myVariable); // 9function hello() { // applicable only for this function 'use strict'; string = 'hello'; // throws an error}hello();

Si utilizas 'use strict'; dentro de una función, el código dentro de la función estará en modo estricto.

En el programa anterior, 'use strict'; se utiliza dentro de la función hello(). Por lo tanto, el modo estricto es aplicable sólo dentro de la función.

Como puedes ver, al principio del programa, myVariable se utiliza sin declarar.

Si declaras 'use strict'; al principio del programa, no puedes utilizar una variable sin declararla también dentro de la función. Por ejemplo,

// applicable to whole program'use strict';function hello() { string = 'hello'; // throws an error}hello();

Nota : El modo estricto no se aplica a las declaraciones de bloque con {} llaves.

Cosas no permitidas en modo estricto

1. No se permite una variable no declarada.

'use strict';a = 'hello'; // throws an error

2. No se permiten objetos no declarados.

'use strict';person = {name: 'Carla', age: 25}; // throws an error

3. No se permite borrar un objeto.

'use strict';let person = {name: 'Carla'};delete person; // throws an error

4. No se permite duplicar el nombre de un parámetro.

"use strict";function hello(p1, p1) { console.log('hello')}; // throws an errorhello();

5. No se permite asignar a una propiedad no escribible.

'use strict';let obj1 = {};Object.defineProperty(obj1, 'x', { value: 42, writable: false });// assignment to a non-writable propertyobj1.x = 9; // throws an error

6. No se permite asignar a una propiedad de sólo obtención.

'use strict';let obj2 = { get x() { return 17; } };// assignment to a getter-only propertyobj2.x = 5; // throws an error

7. No se permite asignar a una nueva propiedad en un objeto no extensible.

'use strict';let obj = {};Object.preventExtensions(obj);// Assignment to a new property on a non-extensible objectobj.newValue = 'new value'; // throws an error

8. No se permite la sintaxis octal.

'use strict';let a = 010; // throws an error

9. Los argumentos de nombre de variable y eval no están permitidos.

'use strict';let arguments = 'hello'; // throws an errorlet eval = 44;

10. Tampoco puedes utilizar estas palabras clave reservadas en modo estricto.

implementsinterfaceletpackageprivateprotectedpublicstaticyield

Beneficios del modo estricto

El uso del modo estricto:

  • Ayuda a escribir un código más limpio
  • Cambia los errores silenciosos previamente aceptados (mala sintaxis) en errores reales y lanza un mensaje de error
  • Facilita la escritura de un JavaScript «seguro»

.

Dejar una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *