javascript - use - slint js




JSLint de repente está relatando: Use o formulário de função "use strict" (6)

É 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
}

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.


Não há nada de errado com a forma das cordas.

Em vez de evitar a forma estrita "global" para se preocupar em concatenar javascript não-estrito, provavelmente é melhor corrigir apenas o maldito javascript não-estrito para ser estrito.


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 */




jslint