JavaScript “use strict”
'use strict';
declara que o código JavaScript deve ser executado em ‘modo strict’. Isto facilita a escrita de um bom e seguro código JavaScript. Por exemplo,
myVariable = 9;
Aqui, a myVariable é criada sem declarar. Isto funciona como uma variável global em JavaScript. No entanto, se a utilizar em modo estrito, o programa irá lançar um erro. Por exemplo,
'use strict';// ErrormyVariable = 9;
O código acima atira um erro porque a myVariable não é declarada. No modo estrito, não se pode utilizar a variável sem a declarar.
br> Para indicar que este programa está no modo estrito, utilizámos
'use strict';
no topo do programa.
Pode declarar o modo estrito adicionando 'use strict';
ou "use strict";
no início de um programa.
Quando declara modo estrito no início de um programa, este terá alcance global e todo o código no programa será executado em modo estrito.
Modo estrito em variável
Em modo estrito, utilizando uma variável sem declarar um erro.
Nota: É necessário declarar modo estrito no início do programa. Se declarar modo estrito abaixo de algum código, não funcionará.
Por exemplo,
console.log("some code");// 'use strict' is ignored// must be at the top"use strict";x = 21; // does not throw an error
Modo estrito em função
P>Tambem se pode usar o modo estrito dentro de uma função. Por exemplo,
myVariable = 9;console.log(myVariable); // 9function hello() { // applicable only for this function 'use strict'; string = 'hello'; // throws an error}hello();
Se usar 'use strict';
dentro de uma função, o código dentro da função estará em modo estrito.
No programa acima, 'use strict';
é usado dentro da função hello()
. Assim, o modo estrito só é aplicável dentro da função.
Como pode ver, no início do programa, myVariable
é utilizado sem declarar.
Se declarar 'use strict';
no topo do programa, não pode utilizar uma variável sem a declarar também dentro da função. Por exemplo,
// applicable to whole program'use strict';function hello() { string = 'hello'; // throws an error}hello();
Nota : O modo estrito não se aplica a declarações de bloqueio com chaves.
O que não é permitido no modo estrito
1. Variável não declarada não é permitida.
'use strict';a = 'hello'; // throws an error
2. Objectos não declarados não são permitidos.
'use strict';person = {name: 'Carla', age: 25}; // throws an error
3. A eliminação de um objecto não é permitida.
'use strict';let person = {name: 'Carla'};delete person; // throws an error
4. A duplicação de um nome de parâmetro não é permitida.
"use strict";function hello(p1, p1) { console.log('hello')}; // throws an errorhello();
5. Não é permitida a atribuição a uma propriedade nãocritível.
'use strict';let obj1 = {};Object.defineProperty(obj1, 'x', { value: 42, writable: false });// assignment to a non-writable propertyobj1.x = 9; // throws an error
6. Não é permitida a atribuição a uma propriedade apenas de getter.
'use strict';let obj2 = { get x() { return 17; } };// assignment to a getter-only propertyobj2.x = 5; // throws an error
7. A atribuição a uma nova propriedade sobre um objecto não extensível não é permitida.
'use strict';let obj = {};Object.preventExtensions(obj);// Assignment to a new property on a non-extensible objectobj.newValue = 'new value'; // throws an error
8. A sintaxe octal não é permitida.
'use strict';let a = 010; // throws an error
9. Os argumentos do nome da variável e avaliação não são permitidos.
'use strict';let arguments = 'hello'; // throws an errorlet eval = 44;
10. Também não é possível utilizar estas palavras-chave reservadas em modo estrito.
implements
interface
let
package
private
protected
public
static
yield
Benefícios do modo estrito
O uso do modo estrito:
- ajuda a escrever um código mais limpo
- altera erros silenciosos anteriormente aceites (sintaxe má) em erros reais e lança uma mensagem de erro
- torna mais fácil escrever JavaScript “seguro”