타입 변환과 단축 평가
명시적 타입 변환 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 |