오늘은 어제 풀던 JavaScript Koans 라는 코드스테이츠의 연습문제를 풀었다. 이 문제는 우리가 여태까지 코드스테이츠를 하면서 배웠던 문제를 복습하는 겸 문제를 푸는 수업이였다. 페어분과 굉장히 재미있게 문제를 풀었다. 시작한다!
true의 값 : true는 자바스크립트에서 1로 인식한다 그래서 1 + ture를 한다면 2가 나온다
자바스크립트는 위에서 아래로 진행된다.
호이스팅 : 함수 전체를 크게 한번 훑는다. 함수 선언식을 전부 확인한 후 선언된 식을 전부 끌어올린다
이미 선언된 식은 호이스팅이 되어 바뀌지 않는다 즉 없는 값만 채워줌
배열의 주소
a와 b가 있다고 가정한다.
a = [1,2,3] 을 준다 그 후 b = a를 할 경우
b역시 [1,2,3]이 할당된다. 여기서 b는 [1,2,3]의 새로운 값을 갖는것이 아닌 a 의 주소값을 할당받는 것 이기 때문에 b를 수정하면 a의 값이 바뀐다. 이러한 배열과 객체의 주소에 대해서 다시한번 복습했다.
...에 대해
spread 문법 - ...은 배열의 []값을 없애어 그 배열을 풀어준다고 알고 있었다. 그런데 오늘 문제에서 배열이 아닌 것을 배열로 묶어주는 역할도 하였다. urClass에서 보니까 그 내용이 맞았고 이것을 spread 문법이라고 불렀다.
객체에서 새로운 객체를 할당해주는데, 객체의 key값이 같고 value값이 다르다면 그 key값에 새로운 value값을 넣어준다.
예시
const a = {
const aa {
name: 코드
job: model
}
age: 25
이 코드에 다음과 같은 코드를 적용한다
const b {
age: 30
...user
}
이렇게 될 겨우 처음에는 key값인 job에 의해 a의 job이 30이 되지만 그 후 ...user에 있는 age에 의해서 다시 25가 된다. 즉 결과값은 age: 25가 된다는 것 이다.
얕은복사와 깊은복사
this는 범용성이 많다. 나중에 자세히 배운다
Object.assign() - 객체를 복사한다.
앞으로 많이 쓴다고 한다. 기억하도록 하자
arr.slice(0)은 배열을 복사하여 붙여넣는다. slice() 이것도 똑같다
아고라스테이츠에 물어볼 질문이 있다.
04번 scope.js에 125번줄에 name이 맨 처음 innerFn()에 있는 name이
let name이라 접근할 수 없어서 상위 스코프인 outerFn()에 들어가는데
outerFn()의 name 이 그냥 name이 아니라 let name이면 더 상위인
전역변수로 가나요?
그리고 outerFn()에 name이 없으면 outerFn()을 지나 전역변수로 넘어가나요?
질문의 답변을 나중에 올리겠다
정말 재미있는 페어분을 만나 즐거운 과제였다. 추석 연휴가 코앞이라 집중이 덜 되었지만 잘 풀어냈고 재충전 후 다시 열심히 공부할 예정이다.