Skip to content

Inside JavaScript(1~3)

dsboo edited this page Oct 18, 2016 · 1 revision

자바스크립트 기본 개요

소개

  • 웹브라우저에서 동작하는 스크립트 언어
  • prototype.js -> jQuery가 개발되면서 많이 발전됩
  • Node.js가 개발되면서 자바스크립트를 이용해 서버단 개발이 가능해짐

자바스크립트 활용 범위

  • 웹 개발 : 전통적인 역할로 웹 개발자에게는 이미 중요한 컨포넌트임
  • 서버개발 : Node.js의 출현으로 서버개발도 활발해졌으며 express, socket.io등의 라이브러리도 등장
  • 애플리케이션 개발 : 웹OS의 등장으로 웹 기반 플랫폼에서는 자바스크립트가 중요해 졌으며 폰갭(PhoneGap)과 같은 개발도구로 디바이스에 대한 동작제어도 가능

자바스크립트의 핵심 개념

  • 객체 : 자바스크립트는 기본형인 boolean, number, string의 형과 null, undefinded의 특수한 값을 제외한 나머지는 전부 객체로 취급한다.
  • 함수 : 함수를 일급객체로 취급, 3장에서 설명
  • 프로토타입 : 모든 객체는 링크(Link)인 프로토타입을 가짐, 4장에서 설명
  • 실행 컨텍스트와 클로저 : 자바스크립트는 자신만의 실행 컨텍스트를 만들고 자신만의 스코프(scope)를 가지며 그 안에서 실행된다. 이를 이용해 클로저를 구현, 5장에서 설명

자바스크립트 개발환경

  • 자바스트립트 개발 비중이 높아지면서, 웹브라우저의 기능(애드온, 개발자도구)들이 나오고 웹스톰과 같은 IDE도 개발되었음(해당 툴의 설치 및 활용방법은 교재(p23~34) 참조)

자바스크립트 데이터 타입 및 연산자

자바스크립트의 데이터 타입은 기본타입, 참조타입으로 나뉨

자바스크립트 기본 타입

  • 자바스크립트의 기본 타입은 숫자, 문자열, 불린값, null, undefined가 있음

숫자

  • 자바스크립트는 C언어와 달리 하나의 숫자형(number, 64비티 부동소수점 형태)만 존재

문자열

  • 작은 따옴표('')나 큰 따옴표("")로 생성, var srt = "test"
  • 한번 생성된 문자열은 수정이 불가능

null과 undefinded

  • null : 개발자가 명시적으로 값이 비어있음을 나타낸 경우
  • undefinded : 값이 아직 할당되지 않은 경우
  • 값이 null인 변수는 object형 이기때문에 일치연산자(===)을 이용해 비교

객체타입

  • 위에 정의된 기본타입을 제외한 나머지, 배열, 함수, 정규표현식 등
  • 객체는 key:value 기반
  • 객체에 포함된 함수를 메서드라고 정의한다.

객체생성

  • Object() 함수를 이용한 생성, var obj = new Object();
  • 리터럴 방식의 생성 var obj = {name:'foo', age:34};
  • 생성자 함수를 이용한 생성, 4장에서 스터디

객체특성

객체비교

  • 동등 연산자(==)는 객체의 프로퍼티가 아닌 참조값으로 비교

참조에 의한 함수 호출 방식

  • 기본타입은 call by value 방식으로 함수를 호출할때 값을 복사하여 복사한 값이 전달
  • 객체타입은 call by reference로 함수를 호출할 때 객체의 참조값이 전달된다.

프로토타입

  • 자바 스크립트의 모든 객체는 자신의 부모역할을 하는 객체와 연결되어 있으며, 부모객체의 프로퍼티를 자신의 것처럼 사용가능, java의 상속과 비슷한 개념이다.

배열

배열 리터럴

  • 새로운 배열을 만들때 사용하는 표기법 대괄호([])를 사용, var array = [1, 2, 3];

배열 요소 생성

  • 배열의 인덱스로 값을 생성, C나 java와는 다르게 아무 인덱스로나 생성가능, var array = []; array[3]="tmon";
  • 값이 할당되지 않는 인덱스의 값은 undefined로 생성된다.

배열과 객체

  • 기본적으로 배열은 Array.prototype를 상속, 객체는 Object.prototype를 상속한다.
  • 따라서 서로 이용할 수 있는 메서드가 틀림, 배열은 length가 있지만 객체는 정의하기 전까지 없음

배열의 프로퍼티 동적 생성

  • 배열도 기본적으로는 객체이므로 프로퍼티를 동적으로 추가할 수 있다, var arr = [3,4]; arr.name = 'tmon';

배열 요소 삭제

  • delete 연산자를 배열의 요소를 삭제 가능, var arr = [3,4]; delete arr[1];

배열 생성자 함수

  • Array() 생성자 함수를 이용해 생성가능, var arr = new Array(3);

유사 배열 객체

  • length 프로퍼티를 가지는 객체를 의미, var obj = {name : '1', length : 1};

기본타입과 표준 메서드

  • 숫자, 문자열, 불린값ㅏㄴ에 대해 각 타입별로 호출 가능한 표준 메서드가 정의되어 있음, toExponential() : 숫자를 지수형태의 문자열로 반환

연산자

    • 연산자는 두 변수가 모두 숫자인 경우 더하기 연산을 나머지는 문자열 연결 연상을 수행한다.
  • typeof 연산자 : 피연산자의 타입을 문자열로 반환
  • 동등연산자(==)는 비교하려는 피연산자의 타입이 다를 경우 같은 타입으로 변환하여 비교, 일치연산자(===)는 타입을 변환하지 않고 비교한다.
  • !! 연산자는 피연산자를 불린형으로 변환