Pertanyaan JSLint tiba-tiba melaporkan: Gunakan formulir fungsi "gunakan ketat"


Saya menyertakan pernyataan:

"use strict";

di awal sebagian besar file Javascript saya.

JSLint belum pernah memperingatkan tentang hal ini. Tetapi sekarang, dengan mengatakan:

Gunakan bentuk fungsi "gunakan yang ketat".

Apakah ada yang tahu apa "bentuk fungsi" itu?


850
2017-12-16 15:36


asal


Jawaban:


Termasuk 'use strict'; sebagai pernyataan pertama dalam fungsi pembungkusan, sehingga hanya mempengaruhi fungsi itu. Ini mencegah masalah ketika menggabungkan skrip yang tidak ketat.

Lihat posting blog terbaru Douglas Crockford Mode Ketat Akan Datang Ke Kota.

Contoh dari pos itu:

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

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

Memperbarui: Jika Anda tidak ingin membungkus dalam fungsi langsung (mis. Itu adalah modul node), maka Anda dapat menonaktifkan peringatan.

Untuk JSLint (per Zhami):

/*jslint node: true */

Untuk JSHint:

/*jshint strict:false */

atau (per Laith Shadeed)

/* jshint -W097 */

Untuk menonaktifkan peringatan sembarang dari JSHint, periksa peta di Kode sumber JSHint (detail dalam dokumen).

Perbarui 2:  JSHint mendukung node:boolean pilihan. Lihat .jshintrc di github.

/* jshint node: true */

937
2017-12-16 15:44



Jika Anda menulis modul untuk NodeJS, mereka sudah dienkapsulasi. Beri tahu JSLint bahwa Anda memiliki simpul dengan menyertakan di bagian atas file Anda:

/*jslint node: true */

214
2017-07-07 12:38



Saya akan menyarankan untuk menggunakannya jshint sebagai gantinya.

Ini memungkinkan untuk menekan peringatan ini melalui /*jshint globalstrict: true*/.

Jika Anda menulis sebuah perpustakaan, saya hanya akan menyarankan penggunaan global yang ketat jika kode Anda diringkas menjadi modul seperti halnya dengan nodejs.

Kalau tidak, Anda akan memaksa semua orang yang menggunakan perpustakaan Anda ke dalam mode ketat.


69
2017-10-12 14:58



Tidak ada yang salah dengan bentuk string.

Daripada menghindari bentuk "global" yang ketat karena khawatir menggabungkan javascript yang tidak ketat, mungkin lebih baik untuk memperbaiki javascript yang tidak ketat itu menjadi ketat.


15
2018-05-25 05:48



Saya mulai membuat aplikasi Node.js / browserify mengikuti Platform Cross JavaScript posting blog. Dan saya mengalami masalah ini, karena Gruntfile baru saya tidak lulus jshint.

Untungnya saya menemukan jawaban di Buku Leanpub di Grunt:

Jika kami mencobanya sekarang, kami akan memindai Gruntfile kami ... dan mendapatkan beberapa kesalahan:

$ 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.

Kedua kesalahan karena Gruntfile adalah program Node, dan secara default JSHint tidak mengenali atau mengizinkan penggunaan module dan versi string dari use strict. Kita dapat mengatur aturan JSHint yang akan menerima program Node kami. Mari kita edit konfigurasi tugas jshint kami dan tambahkan kunci opsi:

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

Menambah node: true ke jshint options, untuk memasukkan jshint ke "mode Node", menghapus kedua kesalahan untuk saya.


15
2018-05-31 07:46



Tambahkan file .jslintrc (atau .jshintrc dalam kasus jshint) di akar proyek Anda dengan konten berikut:

{
    "node": true
}

13
2017-07-29 08:15



Saya pikir semua orang melewatkan bagian "tiba-tiba" dari pertanyaan ini. Kemungkinan besar, .jshintrc Anda memiliki kesalahan sintaks, sehingga tidak termasuk baris 'browser'. Jalankan melalui validator json untuk melihat di mana kesalahan itu.


0
2017-09-13 16:58



Ini sesederhana itu: Jika Anda ingin ketat dengan semua kode Anda, tambahkan "use strict"; pada awal JavaScript Anda.

Tetapi jika Anda hanya ingin ketat dengan beberapa kode Anda, gunakan formulir fungsi. Bagaimanapun, saya akan merekomendasikan Anda untuk menggunakannya di awal JavaScript Anda karena ini akan membantu Anda menjadi coder yang lebih baik.


-5
2018-06-01 11:01