[javascript] JSLint가 갑자기보고합니다 : “엄격한 사용”기능 양식 사용

나는 진술을 포함한다 :

"use strict";

대부분의 Javascript 파일 시작 부분에.

JSLint는 이에 대해 경고 한 적이 없습니다. 그러나 지금은 다음과 같이 말합니다.

“엄격한 사용”기능 양식을 사용하십시오.

“기능 형식”이 무엇인지 아는 사람이 있습니까?



답변

'use strict';줄 바꿈 함수의 첫 번째 명령문으로 포함 하므로 해당 함수에만 영향을줍니다. 이렇게하면 엄격하지 않은 스크립트를 연결할 때 문제가 발생하지 않습니다.

Douglas Crockford의 최신 블로그 게시물 Strict Mode Is Coming To Town을 참조하십시오 .

그 게시물의 예 :

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

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

업데이트 :
즉각적인 기능 (예 : 노드 모듈)으로 랩핑하지 않으려는 경우 경고를 비활성화 할 수 있습니다.

대한 JSLint (당 Zhami ) :

/*jslint node: true */

대한 JSHint :

/*jshint strict:false */

또는 ( Laith Shadeed 당 )

/* jshint -W097 */

JSHint에서 임의의 경고를 사용하지 않으려면 JSHint 소스 코드 에서 맵을 확인하십시오 ( docs에 자세히 설명되어 있음 ).

업데이트 2 : JSHintnode:boolean옵션을 지원합니다 . .jshintrcgithub 참조하십시오 .

/* jshint node: true */


답변

NodeJS 용 모듈을 작성중인 경우 이미 캡슐화되어 있습니다. JSLint에게 파일 맨 위에 포함 시켜서 노드가 있다고 알려주십시오.

/*jslint node: true */


답변

대신 jshint 를 사용하는 것이 좋습니다 .

를 통해이 경고를 억제 할 수 있습니다 /*jshint globalstrict: true*/.

라이브러리를 작성하는 경우 nodejs와 마찬가지로 코드가 모듈로 캡슐화 된 경우 전역 엄격을 사용하는 것이 좋습니다.

그렇지 않으면 라이브러리를 사용하는 모든 사람을 엄격 모드로 강제 설정합니다.


답변

Cross Platform JavaScript 블로그 게시물에 따라 Node.js / browserify 응용 프로그램을 만들기 시작했습니다 . 그리고 새로운 Gruntfile이 jshint를 통과하지 못했기 때문에이 문제가 발생했습니다.

다행히 GruntLeanpub 책에서 답을 찾았습니다 .

지금 시도하면 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. Node 프로그램을 받아 들일 JSHint 규칙을 설정할 수 있습니다. jshint 작업 구성을 편집하고 옵션 키를 추가합시다 :

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

node: truejshint에 추가 하여 optionsjshint를 “노드 모드”로 설정하면 두 가지 오류가 모두 제거되었습니다.


답변

프로젝트의 루트에 다음 내용으로 .jslintrc (또는 jshint의 경우 .jshintrc) 파일을 추가하십시오.

{
    "node": true
}


답변

문자열 형식에는 본질적으로 잘못된 것이 없습니다.

엄격하지 않은 자바 스크립트를 연결하는 것을 걱정하기 위해 “글로벌”엄격한 형식을 피하는 대신, 엄격하지 않은 엄격하지 않은 자바 스크립트를 수정하는 것이 좋습니다.


답변

모든 사람들이이 질문에서 “갑자기”부분을 놓쳤다 고 생각합니다. 아마도 .jshintrc에 구문 오류가 있으므로 ‘브라우저’행을 포함하지 않습니다. json 유효성 검사기를 통해 오류를 확인하십시오.