2014-11-24 9 views

Antwort

5

JSHint (gegabelt von JSLint) ist ein beliebtes "lint checker", dass auf JavaScript-Code ausgeführt wird. Es führt den Code nicht aus oder ändert ihn nicht, sondern analysiert ihn und meldet eine Vielzahl unterschiedlicher potenzieller Fehler oder fehlerhafter Praktiken, die er findet.

Wenn Sie oben in Ihrer JavaScript-Datei 'use strict'; haben, wird außerhalb der JavaScript-Funktionen der strikte Modus für die gesamte Datei aktiviert. Standardmäßig zeigt JSHint eine Warnung an, wenn es dies sieht.

'use strict'; 

window.permissions = null; 

function initialize() { 
    window.permissions = 0; 
} 
Warnings 
1: Use the function form of "use strict". 

Dies liegt daran, automatisch viele Menschen ihre JavaScript zusammen verketten Dateien, bevor sie an den Benutzer, und in diesen Fällen ist die Top-Level-'use strict;' kann Fehler verursachen senden. Wenn Sie beispielsweise 'use strict'; an der Spitze von main.js haben und mit dem nicht strikten Modus controls.js verkettet ist, wird der strikte Modus unbeabsichtigt auch auf den Code controls.js angewendet, wodurch möglicherweise das Verhalten geändert wird.

// This code is fine on its own, but will break if strict mode is applied. 
document.querySelector('.upgade').onclick = function() { 
    window.permissions = 0777; 
} 

Wenn dies in Ihrem Fall passieren könnte, sollten Sie 'use strict'; auf der obersten Ebene der Datei vermeiden. Sie könnten die gesamte Datei in a self-executing function, um Nebenwirkungen der Verkettung zu vermeiden.

(function() { 
    'use strict'; 

    window.permissions = null; 

    function initialize() { 
    window.permissions = 0; 
    } 
}()); 

Allerdings, wenn Sie sicher sind, dass Sie nicht über Verkettung kümmern müssen und wollen nicht, Ihren Code zu ändern, die globalstrict Option für JSHint wird diese Warnung abzuschalten. Es ist also possible, JSHint-Optionen anzugeben, die eine .jshintrc-Datei oder das Befehlszeilenflag --config verwenden, aber in vielen Fällen ist die "Inline-Konfiguration", die Sie mit einem Kommentar in der Datei gesehen haben, am einfachsten.

/* jshint globalstrict: true */ 
+0

so globalalstrict: true wird Warnungen unterdrücken, die "strikt verwenden" würde sonst berichtet haben? – runtimeZero

+1

Ziemlich viel. Es unterdrückt Warnungen, über die JSHint ansonsten über * 'use strict' berichtet hätte. –

Verwandte Themen