학습정리/자습

poiemaweb 8~9강 복습

sunnykim91 2019. 9. 10. 00:45

타입 변환과 단축 평가

명시적 타입 변환 vs 암묵적 타입 변환 

개발자가 의도적으로 값의 타입을 변환 vs 개발자의 의도와는 상관없이 자바스크립트 엔진에 의해 변환

 

암묵적 타입 변환의 예)

 

문자열 타입으로의 변환

// 숫자 타입, XXX + ''는 문자열로 변경 시켜준다. 
0 + ''              // "0"
-0 + ''             // "0"
1 + ''              // "1"
-1 + ''             // "-1"
NaN + ''            // "NaN"
Infinity + ''       // "Infinity"
-Infinity + ''      // "-Infinity"

// 불리언 타입
true + ''           // "true"
false + ''          // "false"

// null 타입
null + ''           // "null"

// undefined 타입
undefined + ''      // "undefined"

// 심볼 타입
(Symbol()) + ''     // TypeError: Cannot convert a Symbol value to a string

// 객체 타입
({}) + ''           // "[object Object]"
Math + ''           // "[object Math]"
[] + ''             // ""
[10, 20] + ''       // "10,20"
(function(){}) + '' // "function(){}"
Array + ''          // "function Array() { [native code] }"

 

숫자타입으로의 변환

 

산술연산자가 들어가게되면 자동으로 숫자로 이해함.

// 문자열 타입
+''             // 0
+'0'            // 0
+'1'            // 1
+'string'       // NaN

// 불리언 타입
+true           // 1
+false          // 0

// null 타입
+null           // 0

// undefined 타입
+undefined      // NaN

// 심볼 타입
+Symbol()       // TypeError: Cannot convert a Symbol value to a number

// 객체 타입
+{}             // NaN
+[]             // 0
+[10, 20]       // NaN
+(function(){}) // NaN

빈 문자열, 빈 배열, null, false는 0으로 

true는 1로 

객체와 빈 배열이 아닌 배열, undefined는 변환되지않아 NaN이 된다.

 

불리언 타입으로의 변환

 

Falsy값 - 불리언 값은로 평가되어야할 문맥에서 false로 평가되는 값들

  • false
  • undefined
  • null
  • 0, -0
  • NaN
  • ’’ (빈문자열)

 

명시적 타입변환

 

방법 3가지

1) 래퍼 객체를 생성하기 위해 사용하는 래퍼 객체 생성자 함수(String, Number, Boolean) 를 new 연산자 없이 호출하는방법

2) 자바스크립트에서 제공하는 빌트인 메소드를 사용하는 방법

3) 암묵적 타입 변환을 이용하는 방법

 

문자열 타입 명시적 변환

String(1)

(1).toString()

1 + ''

 

숫자 타입 명시적 변환

Number('0')

parseInt('0')

+'0'

'0' * 1

 

Boolean 타입 명시적 변환

 

Boolean('x')

!!'x'

 

단축 평가

 

cat && dog  : dog

cat || dog : cat

 

단축 평가 표현식평가 결과

true || anything true
false || anything anything
true && anything anything
false && anything false

 

 

객체 리터럴

원시값은 불가능한 값

객체는 변경 가능한 값

 

객체는 키와 값으로 구성된 프로퍼티의 집합

자바스크립트의 함수는 일급 객체이므로 값으로 취급 할 수 있다.

 

** 인스턴스 : 클래스에 의해 생성되어 메모리에 저장된 실체 

OOP에서의 객체는 클래스와 인스턴스를 포함한 개념이다. 

클래스는 인스턴스를 생성하기 위한 템플릿의 역할을 한다.

인스턴스는 객체가 메모리에 저장되어 실제로 존재하는것에 초점을 맞춘 용어

 

객체 생성방법

  • 객체 리터럴
  • Object 생성자 함수
  • 생성자 함수
  • Object.create 메소드
  • 클래스 (ES6)

 

객체는 프로퍼티들의 집합이며 프로퍼티는 키와 값으로 구성된다.

 

메소드 : 프로퍼티 값이 함수인 경우

 

메소드 내부에서 사용한 this키워드는 객체 자신을 가리키는 참조변수이다.

 

프로퍼티값에 접근하기위해서는 마침표 표기법, 대괄호 표기법 2가지가 있따.

 

var person = {
  name: 'Lee'
};

// 마침표 표기법에 의한 프로퍼티 접근
console.log(person.name); // Lee

// 대괄호 표기법에 의한 프로퍼티 접근
console.log(person['name']); // Lee

 

프로퍼티의 삭제

var person = {
  name: 'Lee'
};

// 프로퍼티 동적 추가
person.address = 'Seoul';

// person 객체에 address 프로퍼티가 존재한다.
// 따라서 delete 연산자로 address 프로퍼티를 삭제할 수 있다.
delete person.address;
반응형