Відповіді:
Включіть 'use strict';
як перше твердження у функцію обгортання, тому воно впливає лише на цю функцію. Це запобігає проблемам об'єднання сценаріїв, які не є строгими.
Дивіться останню публікацію в блозі Дугласа Крокфорда Суворий режим йде в місто .
Приклад із цієї публікації:
(function () {
'use strict';
// this function is strict...
}());
(function () {
// but this function is sloppy...
}());
Оновлення: Якщо ви не хочете перейти до негайної функції (наприклад, це модуль вузла), ви можете відключити попередження.
Для JSLint (за Жамі ):
/*jslint node: true */
Для JSHint :
/*jshint strict:false */
або (за Лаїтом Затіненим )
/* jshint -W097 */
Щоб відключити будь-яке довільне попередження від JSHint, перевірте карту у вихідному коді JSHint (подробиці в документах ).
Оновлення 2: JSHint підтримує node:boolean
опцію. Дивіться .jshintrc
у github .
/* jshint node: true */
-1
/*jshint strict:false */
, щоб було зрозуміліше, що ви робите (якщо тільки у вашому числовому коді немає особливої користі, про яку я не знаю)
"use strict";
один раз на файл.
Якщо ви пишете модулі для NodeJS, вони вже інкапсульовані. Скажіть JSLint, що у вас є вузол, включивши вгорі вашого файлу:
/*jslint node: true */
/*jshint strict:false */
"node": true
до .jshintrc
Я б запропонував використовувати jshint замість цього.
Це дозволяє придушити це попередження через /*jshint globalstrict: true*/
.
Якщо ви пишете бібліотеку, я б запропонував використовувати глобальний строгий, лише якщо ваш код інкапсульований у модулі, як у випадку з nodejs.
Інакше ви змусите всіх людей, хто користується вашою бібліотекою, в суворому режимі.
strict: 'global'
зараз і перегляньте jshint.com/docs/options/#globalstrict
Я почав створювати додаток Node.js / переглядати веб-переглядачі, слідуючи публікації блогу Cross Cross Platform JavaScript . І я зіткнувся з цим питанням, тому що мій абсолютно новий Gruntfile не пройшов jshint.
На щастя, я знайшов відповідь у книзі Leanpub про Грунт :
Якщо ми спробуємо зараз, ми скануємо наш Gruntfile… і отримаємо деякі помилки:
$ 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.
Обидві помилки пов’язані з тим, що Gruntfile - це програма Node, і JSHint за замовчуванням не розпізнає і не дозволяє використовувати
module
і строкову версіюuse strict
. Ми можемо встановити правило JSHint, яке буде приймати наші програми Node. Відредагуємо конфігурацію завдань jshint та додамо ключ параметра:jshint: { options: { node: true }, }
Додавши node: true
до jshint options
, щоб перевести jshint у "Режим вузла", для мене видалили обидві помилки.
Додайте файл .jslintrc (або .jshintrc у випадку jshint) у корінь свого проекту із наступним вмістом:
{
"node": true
}
Я думаю, що всі пропустили "раптово" частину цього питання. Швидше за все, ваш .jshintrc має помилку синтаксису, тому він не включає рядок 'браузер'. Запустіть його через валідатор json, щоб побачити, де помилка.
Це так просто: Якщо ви хочете бути суворими з усім кодом, додайте "use strict";
на початку свого JavaScript.
Але якщо ви хочете бути чіткими лише з деяким кодом, скористайтеся формою функції. У будь-якому випадку, я рекомендую вам використовувати його на початку вашого JavaScript, оскільки це допоможе вам бути кращим кодером.
"use strict";
верхню частину файлу JS, тому це може бути не зовсім правдою.
"use strict";
, де вона просто розміщена у верхній частині коду. Це дозволяє лише "use strict;"
тоді, коли увімкнено функцію. (JS_Hint_ дозволяє використовувати глобальну форму, хоча - див. Відповідь вище для потрібних налаштувань).