HANA -J

8-11장 본문

개발/Javascript

8-11장

Hana-J 2021. 11. 20. 23:18

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