[TIL4me] 자바스크립트 #3

소진수·2021년 7월 25일
0

JAVASCRIPT

목록 보기
5/10
post-thumbnail

8장. 제어문

  • 제어문: 조건에 따라 코드 블록을 실행(조건문)하거나 반복 실행(반복문)할 때 사용
  • 제어문을 사용하면 코드의 실행 흐름을 인위적으로 제어 가능

블록문

  • 0개 이상의 문을 중괄호로 묶은 것으로, 코드 블록 또는 블록이라고 부른다
    • 자바스크립트는 블록문을 하나의 실행 단위로 취급
    • 블록문은 문의 종료를 의미하는 자체 종결성을 갖는다. 고로 세미콜론이 불필요 하다

조건문

  • If...else, 삼항연산자, switch문

    • switch문은 논리적 참, 거짓보다는 다양한 상황(case)에 따라 실행할 코드 블록을 결정할 때 사용한다.

      • Switch (표현식) {

        ​ case 표현식1 :

        ​ switch 문의 표현식과 표현식 1이 일치하면 실행될 문;

        ​ break;

        ​ ...

        ​ default;

        ​ switch 문의 표현식과 일치하는 case문이 없을 때 실행될 문;

        }

    • break문이 없다면 switch문이 끝날 때까지 모든 case문과 default문을 실행했기 때문에 폴스루 가 발생한다.

반복문

  • for문, while문, break문, continue문

    • 반복문의 코드 블록 실행을 현 지점에서 중단하고 반복문의 증감식으로 실행 흐름을 이동시킨다.
    • continue를 사용하게되면 조건문 다음에 중괄호를 제외한다. 가동성이 좋아진다. 큰 의미 없는듯

9장. 타입 변환과 단축 평가

타입 변환이란?

  • 개발자가 의도적으로 값의 타입을 변환시키는 것을

    • 명시적 타입 변환(explicit coercion) // 타입 캐스팅(type casting)
      • 메소드 & 생성자 함수를 new 없이 호출...
  • 개발자의 의도와는 상관없이 표현식을 평가하는 중에 자바스크립트 엔진에 의해 암묵적 자동 반환을

    • 암묵적 타입 변환(implicit coercion) // 타입 강제 변환(type coercion)
      • 문자열 : 템플릿 리터럴 사용(백틱) 또는 피연산자를 문자열로 만들어 값을 문자열로 만든다
      • 숫자열: 비교 연산자, 단항 연산자를 적용
      • 불리언: 자바스크립트 엔진은 불리언 타입이 아닌 값을 Truthy 값 || Falsy 값으로 구분

10장. 객체 리터럴

객체란?

  • 객체는 다양한 타입의 값을 하나의 단위로 구성한 복합적인 자료구조
  • 원시 값은 immuatable value이지만 객체는 mutable value이다.
    • 객체는 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 키와 값으로 구성
    • 프로퍼티의 값이 함수일 경우, 일반 함수와 구분하기 위해 메서드(method)라고 부른다
      • 프로퍼티: 객체의 상태를 나타내는 값(data)
      • 메서드: 프로퍼티(상태 데이터)를 참조하고 조작할 수 있는 동작(behavior)

객체 리터럴에 의한 객체 생성

  • 인스턴스

    • 클래스에 의해 생성되어 메모리에 저장된 실체를 의미
    • 객체는 클래스와 인스턴스를 포함한 개념이다
      • 인스턴스는 객체가 메모리에 저장되어 실제로 존재하는 것에 초점을 맞춘 용어이다\
  • 객체 리터럴은 중괄호내에 0개 이상의 프로퍼티를 정의한다

    • 변수가 할당되는 시점에 자바스크립트 엔진은 객체 리터럴을 해석해 객체를 생성한다.

      let person = {

      ​ name: 'lee',

      ​ say hello: function( ) {

      ​ console.log('hello! my name is ${this.name}.');

      ​ }

      }

프로퍼티

  • 객체는 프로퍼티의 집합이며, 프로퍼티는 키와 값으로 구성

    • 프로퍼티 키: 빈 문자열을 포함하는 모든 문자열 또는 심벌 값

      • 프로퍼티 키는 식별자 네이밍 규칙을 따르지 않는다면 문자열에 따옴표""를 적용해야 한다.

        { firstName : 'unggo',

        'first-name': 'lee' };

      • 프로퍼티 키를 중복 선언하면 나중에 선언한 프로퍼티가 적용된다. 에러는 없다

    • 프로퍼티 값: 자바스크립트에서 사용할 수 있는 모든 값

      • 인스턴스는 객체가 메모리에 저장되어 실제로 존재하는 것에 초점을 맞춘 용어이다

프로퍼티 접근

  • 마침표 표기법: 마침표 프로퍼티 접근 연산자(.)를 사용

  • 대괄호 표기법: 대괄호 프로퍼티 접근 연산자([])를 사용

    • 대괄호 프로퍼티 접근 연산자 내부에 지정하는 프로퍼티 키는 반드시 따옴표로 감싼 문자열

      Console.log(person.name);

      console.log(person['name']);

      • 객체에 존재하지 않는 프로퍼티 접근시 undefined를 반환
      • 대괄호 연산자 내에 따옴표 감싸지 않을 시 ReferenceError를 반환
  • 프로퍼티 접근을 통해 프로퍼티에 값을 할당할 경우, 프로퍼티 값이 갱신된다

  • 존재하지 않는 프로퍼티에 값을 할당하면 동적으로 생성되어 추가, 값이 할당된다.

11장. 원시 값과 객체의 비교

비교되는 점? 메모리 공간의 차이

  • 원시 타입의 값은 변수에 할당하면 확보된 메모리 공간에 실제 값이 저장되어 호출할 시, 복사되어 전달된다.
  • 객체 타입의 값은 변수에 할당되면 확보된 메모리 공간에 참조 값이 저장되어 호출할 시, 참조 값이 복사되어 전달된다.
    • 객체는 프로퍼티 개수에 한계가 없기에 동적으로 추가/삭제가 가능하다.

12장. 함수

함수선언문

  • function add(x, y) { return x+y;}
  • 함수 선언문은 함수 선언'문'이다.

함수표현식

  • var add = function(x, y) { return x+y; }
  • 함수 표현식은 표현식 '문'이다.

Function 생성자 함수

  • var add = new function('x', 'y', 'return x+y');

화살표 함수

  • var add (x,y) => x+y;
profile
느려서 바쁘다

0개의 댓글