테스트하는 값과 기대값을 비교하는 expect 함수

expect(테스트하는값).기대하는조건
이때 '기대하는조건'에 해당하는 함수를 matcher 라고 함

직접 A가 B와 같은지 확인하는 matcher는 equal
expect('테스트하는값').to.equal('기대하는값');

expect(1 + 2).to.equal(3) => 'sum(1, 2)의 결과값은 3과 같아야(equal) 한다'




이상한 산술 연산 결과

 3  - 1  // -> 2
 3  + 1  // -> 4
'3' - 1  // -> 2
'3' + 1  // -> '31'
 1 + true // -> 2
'1' + true // -> '1true'




const 키워드를 사용해야하는 이유

let : 재할당 가능
const : 재할당 불가능
const의 주요 목적은 프로그래밍 실수를 방지하는 것
변수의 값이 변경될 것임을 알 때 let을 사용
변수의 값이 변경되지 않을 것이라면 const를 사용



함수 호이스팅(hoisting)

var을 이용한 변수의 선언문이나 함수 선언문을 유효 범위의 최상단으로 끌어올리는 행위
함수 표현식은 호이스팅되지 않음

catName("클로이");

function catName(name) {
  console.log("제 고양이의 이름은 " + name + "입니다");
}
// 정상작동, 결과: "제 고양이의 이름은 클로이입니다"




원시 자료형과 참조 자료형

원시 자료형 : 값 자체에 대한 변경이 불가능 (immutable)
새로운 값으로 재할당은 가능
원시 자료형을 변수에 할당하거나, 함수의 전달인자로 전달할 경우 값 자체의 복사가 일어남

let currentYear = 2020;

function afterTenYears2(currentYear) {
      currentYear = currentYear + 10;
      return currentYear; // 2030
    }

    let after10 = afterTenYears2(currentYear); // 2030
    expect(currentYear).to.equal(2020);
    expect(after10).to.equal(2030);

함수를 호출하면서 넘긴 전달인자가 호출된 함수의 지역변수로 (매 호출 시마다) 새롭게 선언됨


참조 자료형: 배열에 요소를 추가 및 삭제하고, 객체에 속성을 추가 및 삭제하는 등의 변경이 가능 (mutable)
참조 자료형을 변수에 할당할 경우, 데이터 주소가 저장됨
Object 자료형은 데이터는 heap에 저장되고, 변수에 할당을 할 경우 변수에는 주소가 저장된다.

1) [1, 2, 3];    // [1, 2, 3]이라는 데이터가 heap에 저장되지만,
                 // 변수 할당이 되지 않아 주소는 어디에도 저장되지 않는다.

2) const num1 = [1, 2, 3];   // [1, 2, 3]이라는 데이터가 heap에 저장되고,
                             // 그 주소가 변수 num1에 저장된다.

3) const num2 = [1, 2, 3];   // [1, 2, 3]이라는 데이터가 heap에 저장되고,
                             // 그 주소가 변수 num2에 저장된다.

1), 2), 3)는 전부 다른 주소



arr.pop()을 변수에 할당하면?

const arr = [1, 2, 3]

const poppedValue = arr.pop(); // 리턴값이 할당됨

arr.shift()도 마찬가지!



substring  vs  slice

const arr = [a, b, c, d, e]

arr.substring(start, end)
arr.slice(start, end)

이 때, startend보다 크다면?
substring : start 값과 end 값을 바꾸어서 처리함
slice : 빈 배열 리턴



빈 객체와 빈 배열의 length는?

let obj = {};
let arr = [];

console.log(obj.length) // undefined
console.log(arr.length) // 0








이걸 블로깅할 거라고 생각을 못해서 캡쳐를 못했었는데 npm run submit을 통해 과제를 제출했을 때 분명 제출에 성공하였습니다. 라는 멘트가 나왔는데
디스코드를 확인해보니 다른 분들은 npx codestates-assignment-manager login을 입력하면 제출 기록이 나온다 하시는데 나는 제출 기록이 없다고 나오는 상황이었다.

koans보다 이걸 해결하는 게 더 힘들었다...

  1. 과제 제출 매니저를 다시 설치하면 정상 작동할 것이라고 생각했다.
    rm ~/.codestates-token를 통해서 삭제 후
    재설치하였으나 실패

  2. 이것저것 시도해보다가 나의 node.js 버전이 구버전이었다는 것을 확인했다.
    2-1)
    인터넷에서 시키는대로

    npm cache clean -f
    sudo npm install -g n
    sudo n stable # or sudo n 16.16.0

    이렇게 했는데 그대로 12.18.3 버전..
    2-2)
    node.js 홈페이지에서 인스톨러를 다운받아 설치한 후
    node -v 을 입력하니 16.16.0이 나왔다 !!
    그러나 터미널 재실행하니 다시 12.18.3...

  1. 여기서 내가 더 건들다가 더 고장날 수도 있겠다는 생각 때문에 아고라 스테이츠에 문의하기로 했다
    문의 결과, node.js 버전을 최신버전으로 업데이트하고, 과제 제출 매니저를 재설치하라는 답변을 해주셨다.

  2. 이제 node.js버전의 문제가 맞든, 아니든 재문의를 하려면 일단 이걸 해결해야겠구나 라고 생각했다.
    node.js 버전을 업데이트 or 재설치 하는 다른 방법들을 검색하여 3~4번 가량 더 시도하였으나 전부 실패..

  3. 이건 근본적으로 잘못된 게 분명하다 싶어서 node.js를 처음 설치하던 unit8 강의를 들으러 갔다.

아무리 설치해도 node.js의 버전이 바뀌지 않았던 이유...
나의 node.js의 버전을 볼때부터 대체 12.18.3 라는 이 말도 안되는 버전은 어디서 온 것인가? 라는 의문이 끊이지 않고 머릿 속에 있었는데 강의를 보고 드디어 알아냈다...
강의 중간에 node.js의 이전 버전이 필요할 때 기존의 버전을 삭제하지 않고
nvm install 12.18.3
를 통해 이전 버전을 추가로 설치할 수 있다는...
이 예시를 보고 그 당시에 따라서 설치하였던 것이다.
nvm ls 로 확인해보니 12.18.3 버전이 사용 중이었고
nvm use 16.16.0 를 입력 후
node -v 입력하니 드디어 16.16.0을 볼 수 있었다. . .

이왕 하는 거 깔끔하게 과제 제출 매니저까지 재설치하고
npx codestates-assignment-manager login을 입력해보니~~

내 과제 제출 기록이 따란~~~

과제를 어떻게든 내고 말겠다는 발악이 보이는 제출 기록이었다

이 부트캠프 수강하면서 가장 고통스러우면서 행복한 순간이었다 진짜루

profile
안녕하세연🙋 프론트엔드 개발자입니다

0개의 댓글