210316 JavaScript TIL 5일차/6일차 - ES6 함수의 추가 기능과 배열

Preview

이번 예습 범위는 26장 ES6 함수의 추가 기능과 27장 배열이었다. 이전 예습범위를 공부하면서 자바스크립트가 프로토 타입 기반의 언어라는 부분과 함수형 객체 인스턴스가 어떻게 생성이 되는지에 대해 좀 자세히 공부를 했었는데, 그 덕분에 여러가지로 수월하게 26장의 내용을 이해할 수 있었던 것 같다. 이번 기회로 프로토 타입과 관련한 내용을 개인적으로 찾아가며 학습할 수 있었던 좋은 기회였던 것 같다.
콜백함수와 고차 함수의 개념, 프로토 타입 메서드, 정적 메서드 등의 개념을 이해하고 27장을 보니 이전에는 단편적으로만 보였던 메서드들이 다양하게 구분되어 보이기 시작했다. 역시 아는만큼 보이는 것 같다.
아직 개념적으로 공부해야 될 부분이 많기 때문에 지금 느끼는 재미로 좀 더 확장성 있게 공부하도록 해야겠다.

정적 메서드, 프로토타입 메서드, 인스턴스 메서드

Read more

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

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

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

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

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

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

Hoisting?

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

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

Read more