본문 바로가기
패스트캠퍼스/자습

poiemaweb 8~9강 복습

by sunnykim91 2019. 9. 10.

타입 변환과 단축 평가

명시적 타입 변환 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;
반응형

'패스트캠퍼스 > 자습' 카테고리의 다른 글

리액트 26~30강 정리  (0) 2019.09.18
리액트 21~25강 정리  (0) 2019.09.15
리액트 16~20강 정리  (0) 2019.09.09
리액트 11~15강 정리  (0) 2019.09.08
poiemaweb 6~7강 정리  (0) 2019.09.07