javascript how - JSLint de repente está relatando:Use o formulário de função "use strict"




to eslint (8)

É assim tão simples: se você quiser ser rigoroso com todo o seu código, adicione "use strict"; no início do seu JavaScript.

Mas se você quiser apenas ser rigoroso com algum código, use o formulário de função. De qualquer forma, eu recomendo que você use-o no início do seu JavaScript, porque isso irá ajudá-lo a ser um melhor programador.

Eu incluo a declaração:

"use strict";

no começo da maioria dos meus arquivos Javascript.

O JSLint nunca antes avisou sobre isso. Mas agora é, dizendo:

Use o formulário de função "use strict".

Alguém sabe o que seria o "formulário de função"?


Adicione um arquivo .jslintrc (ou .jshintrc no caso de jshint) na raiz do seu projeto com o seguinte conteúdo:

{
    "node": true
}

Se você está escrevendo módulos para o NodeJS, eles já estão encapsulados. Diga ao JSLint que você tem o nó incluindo no topo do seu arquivo:

/*jslint node: true */

Eu comecei a criar um aplicativo Node.js / browserify seguindo a postagem de blog do Cross Platform JavaScript . E eu me deparei com esse problema, porque o meu novo Gruntfile não passou no jshint.

Por sorte, encontrei uma resposta no livro Leanpub sobre o Grunt :

Se tentarmos agora, vamos analisar o nosso Gruntfile… e obter alguns erros:

$ grunt jshint

Running "jshint:all" (jshint) task
Linting Gruntfile.js...ERROR
[L1:C1] W097: Use the function form of "use strict".
'use strict';
Linting Gruntfile.js...ERROR
[L3:C1] W117: 'module' is not defined.
module.exports = function (grunt) {

Warning: Task "jshint:all" failed. Use --force to continue.

Ambos os erros ocorrem porque o Gruntfile é um programa Node e, por padrão, o JSHint não reconhece ou permite o uso de module e a versão de string de use strict . Podemos definir uma regra JSHint que aceite nossos programas Node. Vamos editar nossa configuração de tarefa jshint e adicionar uma chave de opções:

jshint: {
  options: {
    node: true
  },
}

Adicionando node: true às options jshint, para colocar jshint em "Node mode", removi ambos os erros para mim.


Eu sugiro usar jshint vez disso.

Permite suprimir este aviso via /*jshint globalstrict: true*/ .

Se você estiver escrevendo uma biblioteca, sugiro apenas usar o global strict se o seu código for encapsulado em módulos, como é o caso do nodejs.

Caso contrário, você forçaria todos que estão usando sua biblioteca no modo estrito.


Inclua 'use strict'; como a primeira instrução em uma função de quebra automática, por isso afeta apenas essa função. Isso evita problemas ao concatenar scripts que não são estritos.

Veja o último post de Douglas Crockford, Strict Mode Is Coming To Town .

Exemplo dessa postagem:

(function () {
   'use strict';
   // this function is strict...
}());

(function () {
   // but this function is sloppy...
}());

Atualização: Caso você não queira incluir a função imediata (por exemplo, é um módulo de nó), você pode desativar o aviso.

Para JSLint (por Zhami ):

/*jslint node: true */

Para JSHint :

/*jshint strict:false */

ou (por Laith Shadeed )

/* jshint -W097 */

Para desabilitar qualquer aviso arbitrário do JSHint, verifique o mapa no código-fonte do JSHint (detalhes em docs ).

Atualização 2: o JSHint suporta a opção node:boolean . Veja .jshintrc no github .

/* jshint node: true */

Eu acho que todo mundo perdeu a parte "de repente" desta questão. Muito provavelmente, o seu .jshintrc tem um erro de sintaxe, por isso não está incluindo a linha 'browser'. Execute-o através de um validador json para ver onde está o erro.


new Function()pode ser usado para passar o corpo da função em uma string. E, portanto, isso pode ser usado para criar funções dinâmicas. Também passando o script sem executar o script.

var func = new Function("x", "y", "return x*y;");
function secondFunction(){
   var result;
   result = func(10,20);
   console.log ( result );
}

secondFunction()






javascript jslint