number, string, boolean, null, undefined 등기본형 데이터 타입은 모두 불변성데이터 변경은 데이터를 새롭게 만들어 할당해야만 이뤄집니다.object, Array, Function, Date, RegExp(정규표현식) 등참조형 데이터 타입은
불변 객체는 말 그대로 변하지 않는 객체를 의미합니다.값으로 전달받은 객체를 변경하더라고 원복 객체가 변하지 않아야 하는 경우가 존재합니다.ex) 정보가 바뀐 시점에 알림을 보내야 하는 경우아래는 user를 불변 객체로 만들어 보려고 합니다.위처럼 코드를 작성한다면 u
얕은 복사와 깊은 복사 우선 코드부터 확인해보겠습니다. 한 단계 더 들어간 urls의 내부 프로퍼티들은 기존 데이터를 그대로 참조하는 현상이 발생합니다. 이와 같이 바로 아래 단계의 값만 복사하는 것을 얕은 복사(shallow copy)라고 합니다. 이
한 줄 요약 비어있음을 알리기 위해선 null을 사용하고 undefined 사용은 지양하자. undefined undefined가 나오는 상황은 크게 2가지가 있습니다. 사용자가 명시적으로 undefined를 지정할 경우 값이 존재하지 않을 때 Javscript En
콜백 함수(callback function)란 다른 코드의 인자로 자신이 넘어가 적절한 시점에 실행이 되어지는 함수입니다.우선 setInterval의 구조를 살펴보면func으로 넘겨준 함수는 매 delay(ms)마다 실행되며, 그 결과 어떠한 값도 반환하지 않습니다.
한 줄 요약 눈에 보이는 것이 다가 아니다. 실행 컨텍스트 (execution context) 실행 컨텍스트란 실행할 코드에 제공할 환경 정보들을 모아놓은 객체입니다.
함수 선언문과 함수 표현식
클로저란? 클로저(closure)는 함수형 프로그래밍 언어에서 등장하는 보편적인 특성이기에 다양한 문헌에서 제각각 클로저를 다르게 설명하고 있습니다. 본질을 깨닫고 나면 쉬운 개념인데도 어딘가 갈증이 해소되지 않는 기분을 느끼기도 쉬운 개념이 바로 클로저입니다. 예시
프로토타입(prototype) 기반 언어에선 클래스를 기반으로 하여 '상속'을 사용하는 클래스 기반 언어와는 달리 프로토타입 기반 언어에서는 객체를 원형(prototype)으로 삼고 이를 복제(참조)한으로써 상속과 비슷한 효과를 얻습니다. Constructor를 ne
Javascript는 프로토타입 기반 언어이기 때문에 "상속"이라는 개념이 존재하지 않지만 사용자의 니즈에 따라 결국 ES6에는 클래스 문법이 추가되었습니다. 다만 ES6의 클래스에서도 프로토타입을 활용하고 있기에 ES5 체제 하에서 클래스를 흉내내기 위한 구현 방식을
foo 함수 내의 y는 선언하지 않은 식별자입니다. 따라서 y = 20;이 실행되면 참조 에러가 발생할 것처럼 보이지만 문제없이 잘 동작합니다. 이는 선언하지 않은 식별자에 값을 할당하면 전역 객체의 프로퍼티기 되기 때문입니다.foo 함수가 호출되면 Javascript
객체 프로퍼티에선 해당 속성을 알려주는 설명자(descriptor)라는 것이 존재합니다. 이는 프로퍼티가 데이터 프로퍼티 인가 접근자 프로퍼티 인가에 따라 설명자 구성에 차이가 있기에 두 경우로 나눠서 게시글을 작성하도록 하겠습니다. 해당 게시글에선 데이터 프로퍼티의
var ES5까지는 변수를 선언할 수 있는 유일한 방법이 var 키워드를 사용하는 것이었습니다. 해당 변수들은 다음과 같은 특징들이 있으며 다른 언어와는 구별되는 독특한 특징입니다. 01. 중복 선언 초기화문(변수 선언과 동시에 초기값을 할당하는 문)이 있는 변수
프로그래밍이란 0과 1밖에 알지 못하는 기계가 실행할 수 있을 정도로 정확하고 상세하게 요구사항을 설명하는 작업이며, 그 결과물이 바로 코드입니다. 문제 해결 방안을 고려할 때 컴퓨터의 입장에서 문제를 바라봐야 하는데 이때 필요한 것이 컴퓨팅 사고(Computatio
ECMAScript 사양에 따르면 숫자 타입의 값은 배정밀도 64비트 부동소수점 형식, 즉 모든 수를 실수로 처리합니다.추가적으로 아래 3가지의 값도 표현할 수 있습니다.이때 Javascript는 대소문자를 구문하기 때문에 NaN(Not-a-Number)의 대소문자가