코딩응애의 개발블로그

코드스테이츠 블로깅 (JavaScript Koans) 본문

코드스테이츠(부트캠프)

코드스테이츠 블로깅 (JavaScript Koans)

이너멜 2022. 7. 13. 16:46

expect().to.equal(); 

테스트하는 값과 기대값을 비교하기 위해 expect 함수를 사용 expect(테스트하는값).기대하는조건

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

기대하는조건'에 해당하는 함수를 matcher라고 합니다.

다양한 matcher가 있는데 그중 .equal은 두 값이 타입까지 같은지 검사하는것 === 이것처럼 

expect('테스트하는값').to.equal('기대하는값');

참조 : https://www.chaijs.com/api/bdd/    

 

숫자 - 문자열 = 숫자 ?

말그대로다 왜 숫자가 나오는 걸까 결론부터 말하자면 문자열에서는 빼기를 할 수가 없다고 한다. 

123-'1' = 122

그래서 문자열 1을 숫자로 바꿔줘서 이러한 결과가 나오는 것이다 

참조 : https://stackoverflow.com/questions/24383788/why-does-javascript-handle-the-plus-and-minus-operators-between-strings-and-numb    

 

객체.length 

를 하게되면 길이가 출력이 되는것이 아니라 undefined 가 출력이 된다. 왜냐면 object에는 length 속성이 없기 때문이다. 

 

new Date().getFullYear() 

Date 객체를 활용하면 생성 및 수정 시간을 저장하거나 시간을 측정할 수 있고, 현재 날짜를 출력하는 용도 등으로도 활용할 수 있습니다.

getFullYear() 메서드는 주어진 날짜의 현지 시간 기준 연도를 반환한다. 

 

깊은복사 얕은 복사 

이 개념을 설명하기전 먼저 원시자료형과 참조자료형에 대해 알아야 하는데 그건 정리 되어있으니까 보고 오기. 

깊은 복사는 원시 값을 변수에 할당하면 실제 값이 변수에 저장되는 것처럼 실제 값을 복사를 하는 것이고 

복사를 하고 값을 수정해도 기존 원시값을 저장한 변수에는 영향을 끼치지 않습니다

얕은 복사는 객체를 변수에 할당하면 참조 값(주소 값)이 변수에 저장되는것처럼 참조 값을 복사하는 것이고 

복사를 하고 객체를 수정하면 두 변수는 똑같은 참조(주소)를 가리키고 있기 때문에 기존 객체를 저장한 변수에 영향을 끼칩니다.

let num1 = 1;
let num2 = num1;

num2 = 2;
console.log(num1,num2) // num1: 1, num2: 2 

// 상식적으로 생각해보면 저 결과가 나올것이다 근데 결과를 다른관점에서 생각해보면 
// num1: 2, num2: 2 이렇게도 나올 수 가있다 어떻게 이렇게 나올 수 있을까? 
// 우선 원시값에 대입을 할때는 기존값에 영향을 안끼치므로 기존값은 변하지 않는데 이렇게 나온 결과가 
// 첫번째 결과이고 이게 바로 깊은 복사이다. 다음으로 두번째 결과에 대해 말해보면
// num2에 num1 자체를 넣는다고 생각하면 쉽다. 쉽게 말하자면 num1과 num2를 동일한 것으로 보겠다고 생각을  하는것이다.
// 그러면 1이 num2에 들어가서 1이 되지만 num2 = 2로 인해 2가 되고 num1과 동일하니 num1 또한 2가 되서 
// 결과는 둘다 2가 되는것이고 이것이 바로 얕은 복사이다

위에 코드는 그냥 단순하게 깊은 복사와 얕은 복사 차이를 알아보려고 써놓은 것이다 (feat.라매개발자)

// 깊은 복사 예시 코드
const a = 'a';
let b = 'b';
 
b = 'c';
 
console.log(a); // 'a';
console.log(b); // 'c';
 
// 기존 값에 영향을 끼치지 않는다.

// 얕은 복사 예시 코드 
const a = {
  one: 1,
  two: 2,
};
let b = a;
 
b.one = 3;
 
console.log(a); // { one: 3, two: 2 } 출력
console.log(b); // { one: 3, two: 2 } 출력
 
// 기존 값에 영향을 끼친다.

-- 깊은복사 얕은복사 방법이 블로그마다 다달라서 나중에 더 알아보고 정리하기 

 

Object.keys()

따로 정리한게 있긴 한데 새로 알게된 점이 배열에서도 사용이 가능하다는 점이다 

배열도 객체이기 때문에 사용이 가능 배열에 사용하면 배열의 각 인덱스가 담긴 배열이 리턴이 된다. 

const myArray = ['징버거', '고세구', '아이네','우왁굳'];

const myKeys = Object.keys(myArray);

console.log(myKeys); // ['0','1','2','3'] 출력

 

Comments