본문 바로가기

프론트엔드/코드스테이츠 회고

회고: koans

Type

문자열+ 숫자형 => 문자열       (1+'1') -> '11'

문자열 - 숫자형 => 숫자형.      (123-'1').  122

문자열이 숫자가 아니면 =>NaN.   

 

scope

let age = 27;
let name = "jin";
let height = 179;
function outerFn() {
   let age = 24;
   name = "jimin";
   let height = 178;

   function innerFn() {
     age = 26;
     let name = "suga";
     return height;
   }
   innerFn();
   console.log(age); //26
   console.log(name); //'jimin'
   return innerFn;
}
const innerFn = outerFn();
console.log(age); //27
console.log(name); //'jimin'
console.log(innerFn()); //178
});

 

Object 

얕은복사 : 주소값 복사. 객체가 같은 주소를 공유해서 원본을 손상시킴

깊은복사:  실제값 복사. 원본유지

const a = { id: 1, ref: { refId: 3, name: 'jihoon' } };
const b = Object.assign({}, a);
b.id = 3;
delete b.ref['name'];

 

// a는 {id:1, ref: {refId: 3}}

// b는 {id:3, ref: {refId: 3}}

 

ref 객체 키name을 지우면 같은 주소를 가리키고 있기 때문에 원본에 영향을 미침

 

 

const user = {
name: '김코딩',
company: {
name: 'Code States',
department: 'Development',
role: {
name: 'Software Engineer'
}
},
age: 35
}
const changedDepartment = {
...user,
company: {
...user.company,
department: 'Marketing'
}
}  
원본을 해치지 않는(user의 departmet: 'Development'지키기) 깊은복사를 위해 company 안에 ...user.company를 씀 

 

const temp3 = {
name: '김코딩',
age: 35,
company: {
name: 'Code States',
department: 'Marketing',
role: {
name: 'Software Engineer',
},
}
}
expect(changedDepartment).to.eql(temp3)

'프론트엔드 > 코드스테이츠 회고' 카테고리의 다른 글

코드스테이츠 Secton1 마침 -KPT 회고  (0) 2022.07.20
회고: Dom  (0) 2022.07.14
회고: 원시 자료형 vs 참조 자료형  (0) 2022.07.11
회고: js mutable, immutable  (0) 2022.07.07
회고: CLI  (0) 2022.07.06