[javascript] 모든 JavaScript 프로그래머가 알아야 할 사항은 무엇입니까? [닫은]

모든 JavaScript 프로그래머가 “I JavaScript를 알고 있습니다”라고 말할 수있는 사항이 있습니까?



답변

jQuery가 아닙니다. 유이 아닙니다. 불가 (등 등)

프레임 워크는 유용 할 수 있지만 JavaScript와 DOM이 실제로 어떻게 작동하는지 가끔 추악한 세부 정보를 숨기는 경우가 많습니다. 당신의 목표가 “I JavaScript를 알고있다”고 말할 수 있다면, 프레임 워크에 많은 시간을 투자하는 것이 반대입니다.

다음은 JavaScript가 수행하는 작업을 파악하고 이해하지 못하도록 알아야하는 JavaScript 언어 기능입니다. 그러나 많은 사람들에게 즉시 명백하지는 않습니다.

  • 그것 object.propobject['prop']같은 것입니다 (그래서 eval감사합니다.) 해당 객체 속성은 항상 문자열입니다 (배열의 경우에도). 어떤 것은 forin입니다 (그리고 그것이 무엇되지 않습니다 ).

  • 속성 스니핑; 무엇 undefined인가 (그리고 왜 냄새가 나는가 ); 왜 겉보기 알려지지 in오퍼레이터의 도움과 다르다 typeof/ undefined체크; hasOwnProperty; 의 목적 delete.

  • Number데이터 형식 정말 플로트이다; 플로트 사용의 언어 독립적 어려움; parseInt8 진 함정을 피하십시오 .

  • 중첩 된 함수 범위; var우발적 인 글로벌을 피하려는 범위에서 사용해야 할 필요성 ; 클로저에 스코프를 사용하는 방법; 폐쇄 루프 문제 .

  • 전역 변수와 window속성이 충돌하는 방식; 전역 변수와 문서 요소가 충돌하지 않고 IE에서 수행되는 방식; var이것을 피하기 위해 글로벌 범위에서도 사용의 필요성 .

  • 어떻게 function문 ‘으로 역할을 감아 ‘을 위의 코드 전에 정의; 함수 문과 함수 표현식의 차이점; 명명 된 함수 표현식 을 사용하지 않아야하는 이유 .

  • 생성자 함수, prototype속성 및 new연산자의 실제 작동 방식 이것을 이용하여 실제로 원하는 일반 클래스 / 서브 클래스 / 인스턴스 시스템을 만드는 방법 ; 프로토 타이핑 대신 클로저 기반 객체를 사용하려는 경우 (대부분의 JS 튜토리얼 자료는 이것에 대해 절대적으로 끔찍합니다.

  • this제한이 아닌 콜 타임에 어떻게 결정 됩니까 ? 결과적으로 메소드 전달 다른 언어에서 예상것처럼 작동하지 않는 방법 ; 클로저 또는 Function#bind그 문제를 해결하는 데 사용될 수 있습니다.

  • 다른 인 ECMAScript 5 판은 같은 기능 indexOf, forEach및 기능 – 프로그래밍 방법에 대한Array ; 오래된 브라우저를 수정하여 사용할 수 있도록하는 방법; 인라인 익명 함수 표현식과 함께 사용하여 압축 가능하고 읽기 쉬운 코드를 얻습니다.

  • 브라우저와 사용자 코드 간의 제어 흐름 동기식 및 비동기식 실행; 제어 흐름 내에서 발생하는 이벤트 (예 : 포커스) vs. 제어가 반환 될 때 발생하는 이벤트 및 시간 초과; 아마도 동기식 내장을 호출하면 alert잠재적으로 재앙이 발생할 수 있습니다.

  • 어떻게 교차 창 스크립트가 영향을 instanceof; 교차 창 스크립팅이 다른 문서의 제어 흐름에 미치는 영향 어떻게 postMessage희망이 문제를 해결합니다.

마지막 두 항목에 대해서는 이 답변을 참조하십시오 .

무엇보다도 역사적으로 불완전한 언어 (대부분의 언어보다 더 많은 언어)이기 때문에 JavaScript를 비판적으로보고, 최악의 문제 지점을 피해야합니다. 이 부분에 대한 Crockford의 연구는 확실히 읽을만한 가치가 있습니다 (그러나 100 %가“좋은 부품”에 동의하지는 않지만).


답변

비활성화 할 수 있습니다.


답변

Crockford의 Javascript : The Good Parts 로 작성된 내용을 이해 하는 것은 사람이 괜찮은 JS 프로그래머라는 가정입니다.

JQuery와 같은 좋은 라이브러리를 사용하는 방법을 알 수 있지만 여전히 Javascript의 숨겨진 부분을 알 수는 없습니다.

또 다른 참고 사항은 다양한 브라우저의 디버깅 도구입니다. JS 프로그래머는 다른 브라우저에서 코드를 디버깅하는 방법을 알아야합니다.

오! 그리고 JSLint를 아는 것은 당신의 감정을 완전히 해칠 것입니다!


답변

당신이 진정한 JavaScript 닌자가되고 싶다면 Perfection kills JavaScript Quiz 의 모든 질문에 대한 답을 알아야합니다 .

식욕을 자극하는 예 :

(function f(f){
  return typeof f();
})(function(){ return 1; });

이 표현은 무엇을 반환합니까?

  • “번호”
  • “찾으시는 주소가 없습니다”
  • “함수”
  • 오류

답변

당신이 모른다면 당신은 JavaScript를 모른다.

  1. 폐쇄
  2. 프로토 타입 기반 상속
  3. 모듈 패턴
  4. W3C-DOM
  5. 이벤트 작동 방식

답변

.. 그 자바 스크립트는 자바가 아닙니다 🙂

웹 사이트 개발을 시작한 많은 사람들이 자바 스크립트가 단순한 자바라고 말해주었습니다!


답변

  1. 하나 이상의 Javascript 라이브러리 (Jquery, Prototype 등)에 익숙해 지십시오.

  2. 주요 브라우저 (MSIE 7-8, Firefox, Chrome, Safari)의 디버깅 도구 사용 방법 알아보기

  3. 업계를 읽으십시오 : Douglas Crockford의 웹 사이트는 보물입니다. Ajaxian.com은 Javascript에 대한 새롭고 흥미롭고 이상한 아이디어를 유지하는 좋은 블로그입니다. 다른 많은 자료들이 있지만 그것들은 저에게 가장 큰 도움이되었습니다.