Durante muito tempo, o JavaScript evoluiu sem problemas de compatibilidade. Novas funcionalidades foram adicionadas à linguagem enquanto a funcionalidade antiga não se alterava.
Isso teve o benefício de nunca quebrar o código existente. Mas a desvantagem foi que qualquer erro ou decisão imperfeita tomada pelos criadores do JavaScript ficou presa na linguagem para sempre.
Este foi o caso até 2009, quando o ECMAScript 5 (ES5) apareceu. Acrescentou novas características à linguagem e modificou algumas das existentes. Para manter o código antigo a funcionar, a maioria dessas modificações estão desligadas por defeito. É necessário activá-las explicitamente com uma directiva especial: "use strict"
.
“use strict”
A directiva assemelha-se a uma string: "use strict"
ou 'use strict'
. Quando está localizado no topo de um guião, todo o guião funciona da forma “moderna”.
Por exemplo:
"use strict";// this code works the modern way...
Muito em breve vamos aprender funções (uma forma de agrupar comandos), por isso vamos notar com antecedência que "use strict"
pode ser colocado no início de uma função. Fazendo isso, só se pode colocar um modo estrito nessa função. Mas normalmente as pessoas usam-no para todo o script.
Por favor certifique-se de que "use strict"
está no topo dos seus scripts, caso contrário o modo strict pode não estar activado.
O modo estrito não está activado aqui:
alert("some code");// "use strict" below is ignored--it must be at the top"use strict";// strict mode is not activated
Só podem aparecer comentários acima "use strict"
.
use strict
Não há directiva como "no use strict"
que reverte o motor para comportamento antigo.
Após entrarmos em modo estrito, não há volta a dar.
Consola do navegador
Quando se utiliza uma consola de desenvolvimento para executar código, por favor note que não use strict
por defeito.
Por vezes, quando use strict
faz a diferença, obterá resultados incorrectos.
Então, como realmente use strict
na consola?
P>Primeiro, pode tentar pressionar Shift+Enter para introduzir múltiplas linhas, e colocar use strict
no topo, assim:
'use strict'; <Shift+Enter for a newline>// ...your code<Enter to run>
Funciona na maioria dos navegadores, nomeadamente Firefox e Chrome.
Se não funcionar, por exemplo num navegador antigo, há uma forma feia, mas fiável de assegurar use strict
. Coloque-o dentro deste tipo de invólucro:
(function() { 'use strict'; // ...your code here...})()
Devíamos “usar estritamente”?
A questão pode parecer óbvia, mas não é assim.
Uma pessoa poderia recomendar iniciar scripts com "use strict"
… Mas sabe o que é fixe?
JavaScript Moderno suporta “classes” e “módulos” – estruturas de linguagem avançadas (vamos certamente chegar a elas), que permitem use strict
automaticamente. Assim, não precisamos de adicionar o "use strict"
directiva, se os utilizarmos.
Então, por agora "use strict";
é um convidado bem-vindo no topo dos seus scripts. Mais tarde, quando o seu código estiver todo em classes e módulos, poderá omiti-lo.
As de agora, temos de saber sobre use strict
em geral.
Nos próximos capítulos, à medida que aprendemos as características da linguagem, veremos as diferenças entre os modos estrito e antigo. Felizmente, não há muitas e elas realmente tornam as nossas vidas melhores.
Todos os exemplos neste tutorial assumem o modo estrito, a menos que (muito raramente) se especifique o contrário.