Notice
Recent Posts
Recent Comments
Link
HANA -J
8-11장 본문
11. 타입변환
- 명시적 타입변환
//문자열 타입 변환
String(1); // "1"
String(true) //"true"
(false).toString(); // "false"
//숫자 타입
Number('3'); //3
Number(true); // 1
Number(false);//0
parseInt('10.3'); // 10.3
//불리언 타입
Boolean('hello'); // true
Boolean(''); // false
Boolean(Null);//false
Boolean({});//true
Boolean([]);// true
- 암묵적 타입변환
//문자열타입
'10'+2 //'102'
0+'' //"0"
[10,11]+'' //"10,11"
//숫자타입
5*'10' //50
+'' //0
+'hello' //NaN
+{} // NaN
+[] //0
//Boolean if문 뒤의 모든 코드블럭 실행됨 ,if문 조건은 모두 true를 의미
if(!false){}
if(!undefined){}
if(!null){}
if(!0){}
if(!NaN){}
if(!''){}
12. 자바스크립트는 객체기반 프로그래밍 언어이며, 자바스크립트를 구성하는 거의 "모든 것"이 객체이다.
- 객체는 0개 이상의 프로퍼티와 메서드로 구성된 집합이며, 프로퍼티는 key와 value로 구성된다.
const hana = {
age : 20,
name: hana,
grow:function(){
this.age++;
}
};
13. 프로퍼티에 접근
let person = {
name:'Lee'
};
//마침표 표기법에 의한 프로퍼티 접근
console.log(person.name);
//대괄호 표기법에 의한 프로퍼티 접근
console.log(person['name']);
14. 원시 값은 변경 불가능한 값이다 ❗️ 따라서 직접 변경할 수 없다.
- 변수값을 변경하기 위해 원시값을 재할당하면 새로운 메모리 공간을 확보하고 재할당한 값을 지정한 후, 변수가 참조하던 메모리 주소를 변경한다.(변수가 바라보는 주소가 변경되는것이다.)
- 값의 이러한 특성을 불변성이라고 한다.
- 자바스크립트의 문자열은 원시타입으로 변경 불가능하다.(데이터의 신뢰성을 보장)
15. 유사 배열 객체
- 배열처럼 인덱스로 프로퍼티 값에 접근할 수 있고 length프로퍼티를 갖는 객체를 말한다.
- 자바스크립트 문자열은 배열처럼 인덱스를 통해 각 문자에 접근할 수 있다.
16. 얕은 복사 && 깊은 복사
/얕은복사
const o = {x:{y:1}};
const c1 = {...o}; //두개의 식별자(변수)가 하나의 객체를 공유(같은주소에 있는 값을 바라보고있다)
console.log(c1 ===o); //false
console.log(c1.x === o.x); //true
c1.x.y = 2; //c1 값을 변경 시키면
console.log("o :" + o.x.y) //o에 있는 값도 변경이 되어버림
//깊은복사
const _ = require('lodash');
const c2 = _.cloneDeep(o);
console.log(c2 === o); //false 깊은 복사로 완전히 다른 객체가 된다.
console.log(c2.x === o.x); //false
17. Quiz
let person1 ={
name: 'Lee'
};
let person2 = {
name: 'Lee'
};
console.log(person1 === person2);
console.log(person1.name === person2.name);
//콘솔 출력값은 뭐가 나올까 ?
첫번째 : false 출력 => 같은 문자열이지만 다른메모리에 저장된 별개의 객체(person1 , person2)가 바라보는 주소가 다르다.
두번째 : true = >프로퍼티 값을 참조하는 두값은 표현식이다. 표현식 모두 원시값이 'Lee'로 같기 때문.
728x90
'개발 > Javascript' 카테고리의 다른 글
25. 클래스 (0) | 2021.11.29 |
---|---|
13. 전역변수의 문제점 (0) | 2021.11.28 |
12. 즉시호출 함수 표현식(IIFE)와 node.js require()함수 (0) | 2021.11.25 |
12. 함수(1) (0) | 2021.11.25 |
1-7장 (0) | 2021.11.19 |
Comments