2014-11-24 2 views
6

자바 스크립트 소스 코드를 읽는 동안 자주이 두 줄을 맨 위에 표시합니다.'use strict'를 사용하는`jshint globalstrict : true`의 목적

/* jshint globalstrict: true */ 
'use strict'; 

지금, 나는 아주 잘 'use strict';의 목적을 알고 있습니다. 누군가가 내게 왜 jshint globalstrict이 포함되어 있는지 알려 줄 수 있습니까?

답변

5

JSHint (분기 코드 JSLint)는 JavaScript 코드에서 실행되는 인기있는 "lint checker"입니다. 코드를 실행하거나 수정하지는 않지만 코드를 분석하고 다양한 잠재적 인 오류 또는 발견 된 잘못된 사례를보고합니다.

JavaScript 파일 상단에 'use strict';이있는 경우 JavaScript 기능 외부에서 전체 파일에 엄격 모드가 사용됩니다. 기본적으로 JSHint는 경고를보고합니다.

'use strict'; 

window.permissions = null; 

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

많은 사람들이 자동으로 자바 스크립트가 사용자에게 보내기 전에 파일을 함께 연결하여, 이러한 경우에 최상위 'use strict;' 버그가 발생할 수 있기 때문입니다. 예를 들어, main.js의 상단에 'use strict';이 있고 비 엄격 모드 controls.js과 연결되어있는 경우 무의식적으로 controls.js의 코드에 엄격 모드가 적용되어 동작이 변경 될 수 있습니다. 이 귀하의 경우에 일어날 수있는 경우

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

, 당신은 당신의 파일의 최상위에서 'use strict';을 피해야한다. 연결의 부작용을 피하려면 전체 파일 in a self-executing function을 사용할 수 있습니다. 당신이 연결에 대해 걱정할 필요가 없다는 것을 확신하고 코드를 수정하지 않으려면

(function() { 
    'use strict'; 

    window.permissions = null; 

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

그러나, JSHint에 대한 globalstrict 옵션은이 경고를 비활성화합니다. .jshintrc 파일이나 --config 명령 줄 플래그를 사용하여 JSHint 옵션을 지정하는 것은 also possible이지만 대부분의 경우 파일에서 주석을 사용하여 본 "인라인 구성"이 가장 쉽습니다.

/* jshint globalstrict: true */ 
+0

그래서 globalstrict : true는 'use strict'가 다른 방식으로보고했을 것이라고 경고합니다. – runtimeZero

+1

꽤 많이. JSHint가 다른 방법으로 * 'use strict'를보고했을 것이라는 경고를 표시하지 않습니다. –