본문 바로가기
Tech/Javascript

자바스크립트 프로그래밍 3장 (언어의 기초) - 3.6~3.8

by uyoo 2020. 5. 1.
「프론트엔드 개발자를 위한 자바스크립트 프로그래밍」 서적을 참조했으며, 3장에 대한 요약 및 정리를 진행하려고 한다.

 

제어문

  • If 문

  • do while문
    • 평가 전 루프
    • 루프의 종료 조건을 평가하기 전에 루프의 본문을 실행

  • while문
    • 평가 후 루프
    • 루프 본문을 실행하기 전에 종료 조건을 평가

  • for문
    • 평가 후 루프
    • 루프에 들어가기 전 변수 초기화 가능

  • for-in 문
    • 엄격한 반복문
    • 객체 프로퍼티를 나열하는데 사용
    • 순서가 따로 존재하지는 않음

  • break / continue
    • 루프 내부의 코드 실행을 세밀하게 조절 가능
    • break: 즉시 루프에서 벗어남
    • continue: 다음 루프 진행
    • 문장 레이블과의 조합을 통해 루프를 유연하게 만들 수 있음. but 과용하면 디버그에 문제 발생할 수 있음

  • with 문
    • 코드의 스코프를 특정 객체에 고정
    • strict 모드에서는 금지

  • switch 문
    • if문과 유사
    • case: 표현식이 value와 일치하면 해당 구문을 실행
    • 모든 데이터 타입에서 동작
    • 값은 상수일 필요 없음. 변수나 표현식도 가능
    • 일치 연산자로 값을 비교하기 때문에 타입 변환은 일어나지 않는다

 

 

함수

  • 문장을 캡슐화하여 어디서든, 언제든 실행할 수 있게 함
  • 언제든 무슨 값이든 반환 가능
  • 값을 반환하지 않는 함수는 undefined를 반환

  • 매개변수
    • 데이터 타입을 체크하지 않음
    • 매개변수 개수만큼 넘기지 않으면 나머지 값들은 undefined
    • 함수에서 매개변수를 두 개 받도록 만들었더라도 반드시 두 개를 넘길 필요는 없음
      (인터프리터는 에러로 간주 하지 않음)

    • arguments라는 객체를 통해 매개변수 값에 접근할 수 있음 (유사 배열 객체)
      • 매개변수의 길이(개수)
      • 정보 변경
        • 단방향이기 때문에 매개변수 값을 변경하더라도 arguments[]의 값은 변경되지 않는다
        • 매개변수의 개수에 맞게 호출된 경우 -> arguments[]의 값을 바꾸면 매개변수의 값도 변경
          (매개변수와 arguments[]는 메모리 공간이 다르지만 값을 변경하면 함께 변경)
        • 매개변수의 개수와 다른 경우 -> arguments[]에서 프로퍼티 접근 제한 -> 변경 x
        • strict 모드에서는 arguments[]를 변경하더라도 매개변수 값을 변경 불가

  • 오버로딩이 존재하지 않음
    • ECMAScript 함수에는 시그너처(매개변수의 데이터 타입, 매개변수 개수)가 없기 때문에 진정한 의미의 오버로딩이 불가능
    • 같은 이름으로 함수를 여러 번 정의하면 마지막 함수가 해당 이름을 소유