JS Koans 정리

dice0314·2023년 5월 1일
0

expect를 이용한 결과 비교

비교 결과를 true, flase로 반환

expect('기대값과 특정값의 비교 결과').to.be.true;
expect('기대값과 특정값의 비교 결과').to.be.false;

테스트값과 기대값을 비교

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

비교연산자 '=='과 '==='

느슨한 동치 연산자 '=='

  • 실행중에 타입 변환이 일어난다.
  • 타입이 달라도 true를 반환할 수 있다.
0 == false // true
'' == false // true
'1' == 1 // true
'1' == true // true

엄격한 동치 연산자 '==='

  • 실행중에 타입 변환이 없다.
  • 타입도 같아야 true를 반환한다.
0 === false // false
'' === false // false
'1' === 1 // false
'1' === true // false

const 선언 사용의 이유

  • 'const'로 선언된 변수에는 재할당이 금지된다.
  • const를 사용하면 변수나 매개변수가 변경되지 않음을 명시적으로 나타낼 수 있다.
  • 실수로 변수나 매개변수를 변경하는 경우를 방지할 수 있다.(버그 방지)
  • const를 사용하면 컴파일러가 변수나 매개변수가 변경되지 않음을 알고 최적화를 수행할 수 있다.
  • 상수를 정의할 수 있다.
const num = 1; //const로 num 변수 선언
num = 2; // 에러 발생

호이스팅(Hoisting)

  • 변수 및 함수 선언이 스코프의 상단으로 옮겨지는 것

var 변수 호이스팅

작성한 코드

console.log(x); // undefined
var x = 1;

호이스팅 되어 실제로 실행되는 코드

var x; // 변수 x 선언과 초기화
console.log(x); // 변수 x에 값이 할당되지 않아 undefined 출력
x = 1; // 변수 x에 값 할당

let, const 변수 호이스팅

작성한 코드

console.log(x);  // 값이 할당되지 않아 에러 발생
let x = 10;

호이스팅 되어 실제로 실행되는 코드

let x;  // 변수 x 선언
console.log(x);  // 변수 x에 값이 할당되지 않아 에러 발생
x = 10;  // 변수 x에 값 할당

함수 호이스팅

  • 함수 표현식은 호이스팅이 발생하지 않는다.

작성한 코드

foo();  // hello, 함수 호출

function foo() {
  return 'hello';
}

호이스팅 되어 실제로 실행되는 코드

function foo() {
  return 'hello';
}

foo();  // 함수 호출

profile
정리노트

0개의 댓글