현재 컨텍스트 내의 식별자 즉, let a = 3 에서 let a를 의미
호이스팅의 개념을 적용해 보면 코드 내의 식별자를 전부 위로 끌어 올린다. 그 후 나머지 변수 부분 또는 할당 부분은 그대로 남겨놓는다. 그러면 결과가 달라진다.
매개변수의 호이스팅
함수도 마찬가지로 호이스팅이 적용된다. 하지만 함수는 전부 다 적용되는 것은 아니다.
선언문 즉 function a ( ){ } 이렇게 선언문을 쓰게 된다면 함수 내부 실행 코드 전체가 호이스팅 되기 때문에 코드 전체에 영향을 끼친다. 하지만 표현식 즉 let sum = function (x , y){ } 는 바로 아래 줄 부터 영향을 받기 때문에 표현식을 쓰는 습관을 들이는게 좋다.
같은 배열을 복사해서 정렬을 한다고 가정해보자 원래 배열은 건드리지 말고 똑같은 배열을 복사해서 수정하고 싶다고 했을때 sortedArray = [1,3,5,6] (기존 배열) 을 newArray = sortedArray.sort() 하면 sortedArray도 바뀐 다는 것이다.
그 이유는 메모리의 저장된 데이터 주소값이 같기 때문이고 새로운 배열에 복사 하고싶다면 [...sortedArray](배열을 풀고 다시 묶는 방법) 또는 sortedArray.slice() 를 사용해야 한다.
그래야만 데이터 주소가 따로 저장이 되기 때문에 원래 배열은 냅두고 복사한 배열만 맘대로 사용 할 수 있게된다.
배열에서 1번2번을 먼저 비교한다. a에 2번인덱스가 오고 a에 1번인덱스가온다.
그리고 a-b 2번인덱스 - 1번인덱스를 하고 음수일 경우에 2번 index와 1번 index를 바꿔서 배열에 정렬하고 양수일 경우에는 그대로 정렬한다
오름차순의 반대로 작동한다.
객체의 나이에 접근하고 싶을 때 사진처럼 b.age , a.age 로 접근 할 수 있다.
.obj 또는 배열 [ ]로서의 호출이 아닌 this는 무조건 전역객체를 가르킨다. node환경에서는 global 브라우저에서는 window.
배열과 유사한 객체를 배열로 만든다.
부족한 점
불변 객체부터 호이스팅 전까지 , this부분 나중에 다시 회독 필수.