210316 JavaScript TIL 4일차 - 함수, 함수의 정의, 함수 객체 생성, 프로토 타입, 프로토 타입 멤버 속성 추가/삭제, 객체의 동결, 즉시 실행함수, 중첩 함수, 콜백 함수, 순수 함수, 스코프, 전역변수 사용하지 말기, 일단 const로 변수 선언하기

Preview

오늘은 내일 있을 자바스크립트 수업을 위해서 12장 함수 ~ 15장 let, const와 블록 레벨 스코프에 해당하는 교재의 내용을 읽어보고 개인적으로 궁금한 내용들을 찾아보며 공부해보았다.

우선 강사님이 함수 부분이 가장 중요하다고 하셔서 이 부분을 읽을때 좀 더 집중해서 읽어보았다.
다시 한 번 읽어보고 싶은 내용에 대해서 다시 한 번 정리를 해두었다.

Review

이번 수업에서 가장 중요한 개념은 중첩함수와 콜백함수의 개념이였다.

함수(fuction)

  • 자바스크립트에서 함수는 객체이다.

    자바스크립트의 함수객체는 다른 일반 객체와는 다르다. 일반 객체는 호출할 수 없지만, 함수 객체는 호출할 수 있다.

    자바스크립트에서 함수는 객체이기 때문에 함수 객체만이 가질 수 있는 고유한 속성(property)를 가지고 있다.
    아래 첨부한 노트의 첫 번째를 참고하자. 첫 번째 노트의 우측 상단부를 보면, 함수 객체가 가지는 고유속성 5가지(arguments, caller, length, name, prototype)가 있는 것을 알 수 있다.

    순차적으로 언급한 순서로 함수 객체의 고유 속성에 대해서 알아보도록 하자.

    • arguments : 함수의 인수로 iterable한 유사배열 객체이다. 함수 내부에서 사용되는 지역변수이며, 가변 인자((넘겨받을 인수의 갯수가 정해지지 않았을때 함수 내부에서 사용될 수 있다)

      과거에 가변 인자의 사용으로 인해 argument라는 속성을 사용했지만, ES6에서 rest parameter의 개념이 도입되었다. (…args)

    • caller : ECMAScript 사양에 포함되지 않은 비표준 property이다.

    • length : 함수로 전달된 매개변수(parameter)의 갯수

    • prototype : proto type object에 접근이 가능하게 해준다.


  • 함수는 객체 타입의 값이다.

    Read More

210314 JavaScript TIL 2일차/3일차 - 원시타입과 객체 타입, 값/참조에 의한 전달, 유사배열 객체 String

원시타입과 객체 타입

원시타입 변수의 경우 값을 재정의 하는 경우, 기존에 사용하던 메모리 위치에 다시 덮어쓰지 않고, 다시 새로운 메모리 위치에 새로운 값을 저장한다.

반면 객체 타입 변수의 경우, 객체를 저장하고 있는 공간의 참조값(주소)을 저장하고 있는 공간과 객체의 값을 저장하고 있는 공간, 두 공간을 갖는다.
따라서 객체 값을 저장하고 있는 변수의 값을 변경하는 경우, 메모리상에 저장되어있는 객체의 값을 수정하게 되는 것이다.


  • 값에 의한 전달

    만약 변수에 원시 값을 갖는 변수를 할당하는 경우, 할당되는 변수에 원시 값이 복사되어 전달된다. (다른 메모리 주소 공간에 복사)

Read More

210314 Self Development TIL

Thought of the day

실패한 고통보다 최선을 다하지 못했음을 깨닫는 것이 몇배 더 고통스럽다.
- 앤드류 매튜스


TO DO LIST

  • JavaScript
    • 자바스크립트 예습 12.함수 ~ 15.let,const(완료)
    • 자바스크립트 DAY1 TIL 작성하기 (완료)
    • 자바스크립트 DAY2 TIL 작성하기 (완료)
    • 자바스크립트 DAY3 TIL 작성하기 (완료)

  • 백준 알고리즘 문제풀기

    • 백준 알고리즘 문제 선정하기 (3월 15일 시행 분)

    Read More

210313 JavaScript TIL 1일차 - 변수의 선언과 정의, Hoisting, var, let, const, TDZ

이번주 월요일부터 새롭게 시작한 자바스크립트 강의를 들으면서 데레사 강사님으로부터 HTML/CSS 수업을 들었을 때와 마찬가지로 내가 제대로 JavaScript를 알지 못했었구나라는 생각이 들었다. 그래서 강사님이 말씀하시는 내용 하나 하나 놓치지 않으려고 집중하며 들어보았다.

상대적으로 다른 언어에 비해 러닝커브가 낮기 때문에 처음 배울때에는 마냥 쉽게만 느껴지는 자바스크립트지만, 제대로 그 언어의 특성을 알고 배우기란 여간 쉬운 일이 아니다.

그래서 수업시간에 배웠던 내용 중에 내가 정말 나중에 개발자로서 성장을 하면서 다시금 돌아보면 유익할 것 같은 내용을 위주로 개인적인 생각을 담아 정리를 해보려고 한다.

지금 알고 있는 것이 전부라고 생각하지는 않는다. 다만 현재의 지식의 한계를 인지하고 현재 알고 있는 부분에 대해 블로그에 정리를 해두고 나중에 알게 된 내용에 대해서 새롭게 업데이트를 할 생각으로 블로그 글을 남겨놓는다.

Hoisting?

첫 번째 수업때 가장 기억에 남는 개념은 바로 이 Hoisting이라는 개념이었다.

우선 Hoisting에 대해서 살펴보기 이전에 변수의 선언과 정의에 대해서 이야기해보려고 한다.

Read More

210312 Self Development TIL

Thought of the day

실패한 고통보다 최선을 다하지 못했음을 깨닫는 것이 몇배 더 고통스럽다.
- 앤드류 매튜스


TO DO LIST

  • HTML/CSS Front-end 프로젝트

    • 컴포넌트 작성하기 (진행중)
  • JavaScript

    • 예습하기 (911번까지 읽기)~ (완료)
    • 다음 시간 러버덕 준비하기 - 통학시간 활용 (완료)
    • 자바스크립트에서 if문과 같은 제어문을 사용하지 않도록 한다. (삼항연산자, 단축평가) 블로그 포스팅하기 (예정)
    • 자바스크립트에서 for문과 같은 제어문을 사용하지 않도록 한다. (lambda, callback함수 사용, 기타 반복문 대체 표현) 블로그 포스팅하기 (예정)

    Read More