달러 기호 블루스 : Javascript 및 PHP


18

나는 모든 것이 안전하고 아름다운 C ++ 및 Java 프로그래밍으로 자랐습니다. 내가 길을 잃었을 때 컴파일러는 나를 계속 확인했다. 물론, 모든 사람들이 대학에서 작은 Perl을했지만 흡입하지는 않았습니다. 요즘 아이들은 백엔드의 PHP와 프론트의 Javascript에 관한 것입니다. 힙합하려고 노력하면서 (웹 개발을 위해) 똑같이합니다. 내가 계속 겪고있는 문제는 실수로 Javascript의 정규 변수 앞에 달러 기호 ($)를 추가한다는 것입니다. 물론 jQuery 객체에 종종 사용되는 법적 구문이기 때문에 아무도 아무 것도 말하지 않습니다.

이 달러 기호 혼동을 잡을 수있는 디버깅 도구 나 개발 트릭이 있습니까? 종종 같은 실수를 저지르고 감정적으로 어떻게 대처합니까? Chrome 개발 도구는 이것이 자바 스크립트 오류라는 것을 항상 인식하지는 않습니다. 나는 개발을 위해 PhpStorm과 Emacs를 사용하지만, Emacs는 의심스러워하지만 그 사실에 대해 나에게 알리지 않기로 선택했지만 내 어리 석음을 사로 잡지 않습니다.

이 질문이 말도 안된다고 생각한다면, 당신이 옳다고 생각합니다. 그러나 우리는 변수 앞에 달러 기호가있는 세상에 살고 있습니다. 그런 세상에서는 어리석은 것이 없습니다.


2
감정적으로? 동료들을 속삭이십시오.
Chris Schiffhauer

@ChrisSchiffhauer 불행히도 나는 완전하고 완전한 격리가 게임의 이름 인 학계에서 일합니다. 마지막으로 동료와의 만남을 예약해야했고, 그로 인해 자발적인 문제가 해결 될 것입니다.
Alan Turing 2018 년

답변:


11

$변수 에서 사용하는 데 아무런 문제가 없습니다 . 모든 변수에 대해 의도적으로하지는 않지만 여전히 유효한 구문입니다. jQuery는 $변수 이름으로 사용되는 예제 중 하나입니다 . 그렇기 때문에 "Chrome 개발 도구가 항상 자바 스크립트 오류임을 인식하지는 않습니다" 라는 이유도 있습니다. 처음에는 오류가 없기 때문입니다.

다음과 같은 코드 작성이 두려운 경우 :

var demo = function demo() {
    var a = 123;
    ...
    $a = 456; // A new variable is created in global scope.
}

그런 다음 jsLint , jsHint 또는 Google Closure Linter 와 같은 스타일 검사기를 사용해야합니다 . 그 중 어느 것? 선택하는 것은 당신에게 달려 있습니다. 이를 돕기 위해 몇 가지 참고 사항이 있습니다.

스타일

Google Closure Linter는 똑똑하게 수행되는 것으로 알려진 Google JavaScript 스타일 가이드를 따릅니다 . JavaScript 또는 다른 6 개 언어에 대해 잘 알려진 스타일을 사용하는 것이 좋습니다. 코드를 공유하거나 새로운 개발자를 고용 할 때 이미이 스타일에 익숙 할 것입니다.

많은 개발자들도 Douglas Crockford 스타일에 익숙합니다. 이 스타일은 JavaScript : The Good Parts 에 자세히 설명되어 있으며, JavaScript를 사용 하는 사람이라면 누구나 구입할 수있는 책입니다.

jsHint에 관해서는, 실제로 어떤 규칙이 사용되는지 찾을 수 없으며 웹 사이트 자체는 그 주제에 대해 이야기하지 않는 것 같습니다. 어쩌면 나는 뭔가를 놓쳤다.

IDE 지원

jsLint와 jsHint PhpStorm 에서 지원 됩니다. 이것은 Google Closure Linter 의 경우에도 해당 됩니다.

환경

Google Closure Linter는 일련의 도구 중 하나입니다 . 이미 Google Closure Compiler 또는 Google Closure Library 를 사용하고 있다면 다른 도구보다 Closure Linter를 선택하는 것이 좋습니다.

엄밀

jsLint는 엄격한 것으로 알려져 있습니다. jsHint는 더 관대하며 항상 좋은 것은 아닙니다. 예를 들어, jsHint에 대해 jsLint를 분기시키는 이유 중 하나는 jsLint 에는 오류를 생성하지만 jsHint에는 오류를 발생시키는 잘못된 코드를 보여주는 기사 에서 설명합니다 .

/*global jQuery */

// Example taken from jQuery 1.4.2 source
jQuery.extend({
    /* ... */

    isEmptyObject: function( obj ) {
        for ( var name in obj ) {
            return false;
        }
        return true;
    }

    /* ... */
});

JavaScript에는 블록 범위가 있지만 그렇지 않은 것처럼 보이기 때문에 코드가 잘못되었습니다. JavaScript : 좋은 부분, p. 102, 부록 A : 끔찍한 부품, 범위. 다시 말해, 언어를 모른 채 코드를 살펴보면 name루프 외부에서는 보이지 않지만 코드 는 계속 표시됩니다.

Google Closure Linter에 관해서는 jsLint와 jsHint의 중간에 있다고 생각하지만 그것을 뒷받침 할 정보가 충분하지 않습니다.

결론

나는 jsHint를 피할 것입니다 : 너무 관대합니다. 즉, 다른 린터가 감지 할 수있는 잠재적 인 버그를 찾지 못합니다. 사용 된 스타일 가이드를 찾기가 어렵습니다.

jsLint와 Google Closure Linter 중에서 선택이 명확하지 않습니다. 둘 다 전문가에 의해 작성되었으며, 이미 수천 명의 개발자가 따르는 엄격하고 잘 설명 된 스타일 가이드를 따릅니다. 얼마 동안 둘 다 사용한 다음 더 실용적 인 것을 선택하십시오.


+1 : 저를 이길 수 있습니다. 언어를 F #에서 C #으로 전환 할 때 세미콜론을 삭제하기 시작했습니다. 따라서 고통을 공유 할 수
있습니까

2
OP가 PhpStorm을 사용하고 있기 때문에 JSLint와 JSHint는 통합되어 있으며 필요에 따라 또는 즉시 코드를 검사하도록 설정할 수 있습니다. 예제의 오류와 같은 오류는 쉽게 잡을 수 있습니다.
yannis 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.