프로그래밍[Univ]/웹 프로그래밍

[JavaScript] 자바스크립트

Cloud Travel 2011. 10. 10. 19:37
1. JavaScript란
 - 인터프리터 방식의 Script언어
 - HTML에 기능을 추가하기 위해서 사용
  > HTML은 정적인 요소를 나타낸다면, JavaScript는 동적인 요소를 나타낸다.
 - 가격이 무료이며, 대부분의 브라우져에서 지원해준다
 - ECMA에 의해 표준화가 되었다.

2. JavaScript적용하기
 - HTML 내부에 삽입 : <script>태그를 사용하여 head나 body 태그 내부에 넣어준다.
  ex) <script type = "text/javascript"> <--! // --> </script>
        여기서 <--! -->주석이 들어가는 이유는 Javascript를 지원하지 않는 브라우져를 위해서 사용된다.
 - 외부 JavaScript 파일 사용
  ex) <script type = "text/javascript" scr = "FILENAME.js" ></script> 
        외부에 선언후 태그에 속성갑쳐럼 스크립트의 함수를 불러다 쓴다.
     
3. Java와의 비교
 - 결론부터 말하면, 비슷하긴하지만 전혀 다른 언어이다.
 - 공통점
  ⓐ 대/소문자 구분
  ⓑ 문장은 ';' 에 의해 구분 
  ⓒ 기본적인 제어 구문, 블록 등이 자바와 동일한 형태를 보인다
 - 차이점
  ⓐ Dynamic한 언어이다. : 명시적인 데이터 타입 선언이 없음
  ⓑ 함수도 객체처럼 사용된다.
  ⓒ Prototype를 이용 

4. 데이터 타입
 - 숫자 : 정수와 실수의 구분이 없으며 이중 정밀도를 보인다. 
  > NaN : 숫자가 아니다 //  1/0 : 무한대
 - 문자열 : 16비트의 유니코드를 사용
  > 문자열도 객체로 함수를 포함하고 있다.
 - Boolean : Ture or False
  > False : false, 0, NaN, null, nudefined
 
5. 변수
 - 데이터 타입을 지정하지 않음
 - 필요한 경우 타입 변환이 자동으로 일어난다.
  > 강제로 타입을 변환하는 함수도 존재한다. parseInt(), parseFloat(), Number(), String()
 - 변수선언 : 에러를 줄이기 위해서 선언해주는 var와 함께쓰는 것을 권장한다.
  > var a; // undefined : 초기화 되지가 않음
     var b = "bee";  // 초기화가 됨
     c = "car"; // var를 생략하고도 사용 가능
     ※ 자바스크립트에서는 var를 사용하지 않으면 전역변수가 된다.

6. 연산자
 - 자바와 동일하나 추가적인 것이 몇개 존재
  > '===' 형변환을 하지 않고 비교를 한다.
   ex) 3 == "3" // 스트링 3과 숫자 3은 숫자 3이 스트링으로 형변환한 후 비교를 한다. 즉, true
         3 === "3" // 숫자3이 위와 같은과정(스트링으로의 변환)을 갖지 않으므로 false
 - typeof : 변수의 타입을 알려준다.

7. 제어구문
 - 자바와 동일하나 새로 추가된 형태가 존재한다.
 - var name = n && n.getName(); // 이 뜻은 n이 존재하면 n의 getName함수를 실행하는 것이다.
 - var name = (n && n.getName()) || "default";
    // 이 뜻은 n이 존재하면 n의 getName함수를 실행, 없으면 default값을 준다.

8. 객체
 - Key - value형식으로 해쉬형태를 취한다.
 - for루프 등의 순환문을 할때에 obj의 키값을 이용하여서도 돌릴 수 있다.
 - 선언
  var obj = { EXPR } // EXPR안에 또다른 객체가 올수도 있다!!

9.  함수
 - 함수도 객체임을 생각하자!!
 - 데이터 타입 지정이 없으며 return이 없으면 undefined를 반환한다.
 - 지역 변수 사용이 가능하다. 물론, var를 붙여서 사용해야 할 것이다.
 - 익명 함수
  > 함수도 객체 이므로 다른 객체의 멤버가 될 수 있다.
  > 데이터 함수가 혼재 
 - this사용 가능
 - 만일 new를 계속하다보면 함수가 지속적으로 함수가 생성되어 메모리에 무리가 올수 있다.
  > 이것을 방지하기 위해 발생한 것이 Prototype!!
 
10. 프로토타입
 - Prototype는 모든 객체에서 공유할 수 있는 객체를 의미한다.
 - 특별히 override되지 않았다면 prototype의 객체에 접근을 시도한다
 - 즉, 객체내에서 함수들이 공유해서 사용할수 있다.
 - 프로그램 실행 중에 객체의 프로토타입을 수정이 가능하다.
 

---------------------------------------------------------------------------------------
자바 스크립트의 능력을 향상시키고 싶다면, Jquery의 오픈소스를 분석해보는 것도 좋다.