티스토리 뷰

Languages

JavaScript : 기본적인 내용2

Korean Eagle 2021. 2. 24. 23:49
728x90

1. 자바스크립트는 실행 시에 동적으로 변수의 타입을 결정한다. Dynamic Typing 언어이다.

  1-1 Primitive 형으로는 6개의 타입을 지원하는데, undefined, null, boolean number, string, symbol 이다.

    1-1-1 자바 스크립트의 number는 floating number를 단일적으로 사용한다. 

  1-2 symbol ES6에서 지원하는 데이터 타입이다.

  1-3 Primitive 형은 하나의 값만을 가진다. string 형도 자바처럼 char[] 처럼 취급되지 않는다.

  

2. Operator는 다른 언어와 비슷하게 특수한 형태를 가지는 함수이다. infix, 내부에 들어가는 형, prefix 등 다양하다.

  2-1 Operator는 실행 시의 우선순위를 가지고 있다.

  2-2 모든 operator는 Associativity라는 좌->우, 우->좌 같은 실행 방향 가지고 있다.

  2-3 모든 operator는 결과 값을 반환한다. 예를 들면 '='은 오른쪽에 할당된 값을 반환한다.

 

3. 강제형 변환(Coercion)

  3-1 자바 스크립트는 동적 타입을 사용하기 때문에 expression을 계산할 때 강제형 변환이 일어 난다.

  3-2 '==' 는 강제 형변환이 된 값을 사용하여 비교하여 같은 값인지를 판단한다.

  3-3 '==='은 강제 형변환 없이 비교하기 때문에 타입 까지 동일한 경우에 true를 반환한다.

  3-4 number 타입의 경우 false, ''(빈공백) 을 0으로 강제변환하여 비교한다. 

    3-4-1 if (1 < 2 <= 1) 은 true를 반환한다. 1<2가 true를 반환하고 true는 1로 변환되고 1 <= 1 은 true가 된다.

    3-4-2 undefined는 NaN을 반환한다.

  3-5 boolean 타입의 경우 undefined, null, 빈공백 모두 false로 치환된다. NaN도 false로 해석한다.

    3-5-1 if (a) 같은 형식의 값의 존재 여부 판단에 편리하게 사용할 수 있다.

    3-5-2 다만 숫자 0도 false로 판단하기 때문에 숫자가 올 경우는 명시적으로 수식을 사용해야 한다.

 

4. Operator의 특성을 이용하여 기본값을 설정할 수 있다.

  4-1 아래의 함수 내의 name이라는 parameter는 생성 과정에서 변수공간에 할당된다.

  4-2 호출 시 값이 없는 경우 undefined가 지정된다.

  4-3 || 연산자는 반환값이 true, false일 수도 있지만 강제형 변환이 이루어진 경우는 true인 로직의 값을 반환 한다.

    4-3-1 name에 undefined, 빈공백, false, NaN가 올 경우 false가 되고 true로 형변환 되는 "Your Name"이 반환된다.

    4-3-2 만일 name에 값이 들어 있다면, 그 값이 true로 강제 형변환되기 때문에 그 값이 반환된다.

    4-3-3 여기서 주의할 경우 name에 숫자 0이 올 경우는 그냥 "Your Name"이 반환됨에 주의해야 한다.

 

function hello(name) {
  name = name || "Your Name";
  console.log("Hello! " + name);
}

  

  4-4 이런 || 연산자의 강제형 변환과 ||의 반환값의 특징을 이용하여 global 공간에서의 변수의 충돌을 체크 할 수 있다.

    4-4-1 jQuery라는 변수가 사용되지를 확인하기 위해 var jQuery = jQuery || specialObject; 형식을 사용할 수 있다.

  

728x90

'Languages' 카테고리의 다른 글

JavaScript: delete operator  (0) 2021.04.12
Javascript : 기본적인 것들 3  (0) 2021.02.25
JavaScript : 기본적인 내용  (0) 2021.02.23
Java 배열복사, Wrapper 클래스 등  (0) 2021.01.30
Java : Optional  (0) 2020.07.28
댓글