Eu estive examinando a referência JavaScript na Mozilla Developer Network, e me deparei com algo chamado "strict mode"
. Eu li e estou tendo problemas para entender o que faz. Alguém pode explicar brevemente (em geral) qual é o seu objetivo e como é útil?
javascript
strict-mode
nkcmr
fonte
fonte
Respostas:
Seu principal objetivo é fazer mais verificações.
Basta adicionar
"use strict";
na parte superior do seu código, antes de qualquer outra coisa.Por exemplo,
blah = 33;
é JavaScript válido. Isso significa que você cria uma variável completamente globalblah
.Mas, no modo estrito, é um erro, porque você não usou a palavra-chave "var" para declarar a variável.
Na maioria das vezes, você não pretende criar variáveis globais no meio de um escopo arbitrário; portanto, na maioria das vezes, isso
blah = 33
é escrito, é um erro e o programador realmente não quer que seja uma variável global. para escrevervar blah = 33
.Da mesma forma, não permite muitas coisas tecnicamente válidas para fazer.
NaN = "lol"
não produz um erro. Também não altera o valor de NaN. usando estrito isso (e declarações estranhas semelhantes) produzem erros. A maioria das pessoas gosta disso porque não há motivo para escreverNaN = "lol"
, então provavelmente houve um erro de digitação.Leia mais na página MDN no modo estrito
fonte
Um aspecto do modo estrito não já mencionados na resposta de Simon é que estritas conjuntos de modo
this
aundefined
em funções invocado através da invocação da função.Então coisas assim
causará um erro quando
privateMethod
for chamado (já que você não pode adicionar uma propriedade aundefined
), em vez de adicionar umab
propriedade inutilmente ao objeto global.fonte
privateMethod.bind(this)();
e ligar comnew
jsbin.com
O modo estrito foi adicionado para que houvesse um subconjunto facilmente analisável estaticamente do EcmaScript, que seria um bom alvo para futuras versões da linguagem. O modo estrito também foi projetado na esperança de que os desenvolvedores que se limitam ao modo estrito cometessem menos erros e que os erros que eles cometem se manifestassem de maneiras mais óbvias.
A harmonia , que se tornará a próxima versão principal do EcmaScript, será construída sobre o ES5.
Alguns outros experimentos de linguagem também dependem do modo estrito. O SES depende da capacidade de análise do modo estrito ES5.
O anexo C da norma explica as diferenças entre o modo estrito e o modo normal.
fonte
Invocando o modo estrito no código
O modo estrito se aplica a scripts inteiros ou a funções individuais. Não se aplica à instrução de bloco entre chaves {}, tentar aplicá-la a esses contextos não faz nada.
Script inteiro:
Digamos que estamos criando o app.js, portanto, a adição do script de uso da primeira instrução aplicará um modo estrito para todo o código.
Modo estrito para a função:
Para invocar o modo estrito de uma função, coloque a declaração exata “use strict”; no início do corpo da função antes de qualquer outra instrução.
O modo estrito incorpora várias alterações na semântica normal do Javascript. O primeiro modo estrito elimina algum erro silencioso do JavaScript, alterando-o para gerar erros.
Por exemplo: código usando o modo estrito
No exemplo de código acima, sem usar o modo estrito no código, ele não emitirá um erro. Como estamos acessando a variável
x
sem declará-la. Portanto, no modo estrito, acessar a variável não declarada gera um erro.Agora vamos tentar acessar a variável x sem declará-la sem o modo estrito.
Vantagem de usar o modo estrito:
fonte
O modo estrito faz várias alterações na semântica normal do JavaScript.
O modo estrito elimina alguns erros silenciosos do JavaScript, alterando-os para gerar erros.
O modo estrito corrige erros que dificultam a otimização dos mecanismos JavaScript.
O modo estrito proíbe alguma sintaxe que provavelmente será definida em versões futuras do ECMAScript.
fonte
ECMAScript5
apresenta alguns novos objetos e propriedades e também os chamados"strict mode"
.O modo estrito é um subconjunto do idioma que exclui recursos obsoletos. O modo estrito é ativado e não é obrigatório, o que significa que, se você deseja que seu código seja executado no modo estrito, declara sua intenção usando (uma vez por função ou uma vez para todo o programa) a seguinte string:
fonte
2017 e finalmente encontrei a documentação:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode
fonte
Pergunta: A
seguir está o problema que encontrei, eu estava seguindo um tutorial e ele acabou tentando compilar o
scss
arquivo a seguir e tentando gerar código CSS a partir dele,usando a seguinte
gulpfile.js
tarefa:Portanto, o erro que estou recebendo é o seguinte:
Solução:
Ele mostra o
index.js
arquivo que está dentro do meu módulo gulp-sass (que está basicamente bloqueado e não deve ser editado). Mas se eu forçar com força e adicionar a"use_strict"
parte superior desseindex.js
arquivo, ele executará minha tarefa sem problemas.Eu estava impotente, então continuo usando isso como solução! Mas depois de passar por algumas outras perguntas e respostas da SO , vi a seguinte resposta :
e antes atualizei meus NodeJs (para Version10.x) e, em seguida, reconstruí o Gulp executando os seguintes comandos, conforme as instruções do Terminal:
E está tudo bem. Então foi assim que foi resolvido. Eu desfiz as alterações que fiz no
index.js
arquivo do módulo gulp. E agora funciona sem problemas.Espero que esta resposta seja útil para alguém por aí!
fonte