Jawaban:
Sertakan 'use strict';
sebagai pernyataan pertama dalam fungsi pembungkus, sehingga hanya memengaruhi fungsi itu. Ini mencegah masalah ketika menggabungkan skrip yang tidak ketat.
Lihat posting blog terbaru Douglas Crockford, Mode Ketat Datang ke Kota .
Contoh dari pos itu:
(function () {
'use strict';
// this function is strict...
}());
(function () {
// but this function is sloppy...
}());
Pembaruan: Jika Anda tidak ingin membungkus dalam fungsi langsung (misalnya itu adalah modul simpul), 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 sewenang-wenang dari JSHint, periksa peta dalam kode sumber JSHint (perincian dalam dokumen ).
Pembaruan 2: opsi dukungan JSHintnode:boolean
. Lihat .jshintrc
di github .
/* jshint node: true */
-1
/*jshint strict:false */
, untuk membuatnya lebih jelas apa yang Anda lakukan (kecuali ada manfaat khusus untuk kode numerik Anda yang saya tidak tahu)
"use strict";
satu kali per file.
Jika Anda menulis modul untuk NodeJS, mereka sudah dienkapsulasi. Beri tahu JSLint bahwa Anda memiliki simpul dengan memasukkan di bagian atas file Anda:
/*jslint node: true */
/*jshint strict:false */
"node": true
ke .jshintrc
Saya sarankan untuk menggunakan jshint saja.
Memungkinkan untuk menekan peringatan ini melalui /*jshint globalstrict: true*/
.
Jika Anda menulis perpustakaan, saya hanya akan menyarankan menggunakan global ketat jika kode Anda dienkapsulasi ke dalam modul seperti halnya dengan nodejs.
Kalau tidak, Anda akan memaksa semua orang yang menggunakan perpustakaan Anda ke mode ketat.
strict: 'global'
sekarang, dan lihat jshint.com/docs/options/#globalstrict
Saya mulai membuat aplikasi Node.js / browserify setelah posting blog Cross Platform JavaScript . Dan saya mengalami masalah ini, karena Gruntfile baru saya tidak lulus jshint.
Untungnya saya menemukan jawaban di buku Leanpub tentang 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 tersebut karena Gruntfile adalah program Node, dan secara default JSHint tidak mengenali atau mengizinkan penggunaan
module
dan versi string dariuse strict
. Kita dapat menetapkan aturan JSHint yang akan menerima program Node kita. Mari kita edit konfigurasi tugas jshint kami dan menambahkan kunci opsi:jshint: { options: { node: true }, }
Menambahkan node: true
ke jshint options
, untuk memasukkan jshint ke "mode Node", menghapus kedua kesalahan untuk saya.
Tambahkan file .jslintrc (atau .jshintrc dalam kasus jshint) di root proyek Anda dengan konten berikut:
{
"node": true
}
Tidak ada yang salah dengan bentuk string.
Daripada menghindari bentuk ketat "global" karena khawatir akan menggabungkan javascript yang tidak ketat, mungkin lebih baik memperbaiki javascript yang tidak ketat itu dengan ketat.
Saya pikir semua orang melewatkan bagian "tiba-tiba" dari pertanyaan ini. Kemungkinan besar .jshintrc Anda memiliki kesalahan sintaks, jadi tidak termasuk baris 'browser'. Jalankan melalui validator json untuk melihat di mana kesalahannya.
Begini sederhananya: Jika Anda ingin ketat dengan semua kode Anda, tambahkan "use strict";
di 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 pembuat kode yang lebih baik.
"use strict";
di bagian atas file JS saya, jadi ini mungkin tidak sepenuhnya benar.
"use strict";
, di mana ia ditempatkan di bagian atas kode Anda. Ini hanya memungkinkan "use strict;"
ketika dibungkus dalam suatu fungsi. (JS_Hint_ memungkinkan Anda menggunakan formulir global, - lihat jawaban di atas untuk pengaturan yang diperlukan).