JavaScript_Koans

박상훈·2022년 7월 13일
0

codeStates

목록 보기
2/4
post-thumbnail

Javascript Koans

codeStates 에서 처음 해보는 Koans에서 알게된 문법, 주제, 챕터 등
공부 차원에 블로그 포스팅입니다

자바스크립트 별난경우(wtfjs)

https://github.com/denysdovhan/wtfjs

예외 상황들이 있는 저장소 입니다.

console.log(1 + '1') // 숫자 와 '문자열숫자' 에 합은 '문자열숫자'가 됩니다.
=> '11'
console.log(123 - '1') // 숫자 와 '문자열숫자' 에 차는 숫자가 됩니다.
=> 122
console.log(1 + true) // 숫자 와 true는 에 합은 2가 됩니다 .
=> 2
console.log('1' + true) // '문자열숫자' 와 true는 에 합은 '1true'가 됩니다 .
=> 1true

true가 기본적으로 1 , false 가 0이라는 컴퓨터 의 원리를 생각하면 되는 부분이였습니다.
if문에서(true) 일때 1 일때 즉 통과 될때 라는점
예외 상황을 따로 외우고 공부해야되는 우선도가 높지 않아서 이런 경우가 있다고만 알면
될꺼 같습니다.

객체 Key , Value 값이 없을때

const obj = { x: 1 };
delete obj.x;
console.log(obj.x) => undefined 가 출력이 됩니다.

빈객체 일때 체크하는법,구하는법등 정리해서 추가하기

Scope

scope는 변수의 값(변수에 담긴 값)을 찾을 때 확인하는 곳을 말합니다.

함수 선언식(declaration) 과 함수 표현식(expression)

describe('scope 대해서 학습합니다.', function () {
  it('함수 선언식(declaration)과 함수 표현식(expression)의 차이를 확인합니다.', function () {
    let funcExpressed = 'to be a function';

    expect(typeof funcDeclared).to.equal('function');
    expect(typeof funcExpressed).to.equal('string');

    function funcDeclared() {
      return 'this is a function declaration';
    }

    funcExpressed = function () {
      return 'this is a function expression';
    };

    // 자바스크립트 함수 호이스팅(hoisting)에 대해서 검색해 봅니다.

    const funcContainer = { func: funcExpressed };
    expect(funcContainer.func()).to.equal('this is a function expression');

    funcContainer.func = funcDeclared;
    expect(funcContainer.func()).to.equal('this is a function declaration');
  });

1)선언과 할당을 먼저하고서
2)함수를 호출한 다음
3)아래 새로운 할당을 하지만
4)함수 표현식 , 함수 선언식 어떤 방식으로 하냐 결과가 달라집니다.

함수선언식은 3)경우 , 2)일때 함수에서 영향을 줍니다.
함수표현식은 3)경우에서, 2)일때 함수에 영향을 주지 않습니다.

호이스팅(Hoisting)

호이스팅에 찾아보고 적기
호이스팅이 나오는 상황을 만들지 않는게 최선이지만(EsLint사용등)
호이스팅을 이해하고있어야 타인의 코드해석을 할 수 있는 경우가 있습니다.

profile
다들 좋은 하루 되세요

0개의 댓글