💻 JavaScript > 자바스크립트는 객체(Object) 기반의 스크립트 언어이다. HTML로는 웹의 내용을 작성하고, CSS로는 웹을 디자인하며, 자바스크립트로는 웹의 동작을 구현할 수 있다. 💡JavaScript의 역사 자바스크립트는 1995년에 넷스케이
💻 변수란? > 변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름을 말한다. 변수명 : 메모리 공간에 저장된 값을 식별할 수 있는 고유한 이름 변수값 : 변수에 저장된 값 식별자 : 어떤 값을 구별해서 식별할
값: 식(표현식)이 평가되어 생성된 결과리터럴: 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법값으로 평가될 수 있는 문. 즉, 표현식이 평가되면 새로운 값을 생성하거나 기존값을 참조한다.✔ 값으로 평가될 수 있는 문은 모두 표현식이다.프로
💻 데이터 타입 > 데이터 타입은 값의 종류를 말한다. 자바스크립트의 모든 값은 7개의 데이터 타입을 가진다. |구분|데이터 타입|설명| |---|----|---| ||숫자 타입|숫자, 정수와 실수 구분 없이 하나의 숫자 타입만 존재 ||문자열 타입|문자열 |원시
연산자는 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타립, 지수연산 등을 수행해 하나의 값을 만든다.산술 연산자는 피연산자를 대상으로 수학적 계산을 수행산술 연산이 불가능 한 경우 NaN 반환이항 산술 연산자는 2개의 피연산자를 산술 연산하여 숫자 값을
자바스크립트의 모든 값은 타입이 있다.개발자가 의도적으로 값의 타입을 변경하는 명시적 타입 변환 또는 타입 캐스팅개발자의 의도와는 상관 없이 자바스크립트 엔진에 의해 암묵적으로 타입이 변환되는 암묵적 타입 변환 또는 타입 강제 변환📌 명시적 타입 변환이나 암묵적 타입
자바스크립트는 객 기반의 프로그래밍 언어이며, 자바스크립트를 구성하는 "모든것"이 객체이다.원시값을 제외한 나머지 값은 모두 객체이다✔️ 원시 타입의 값, 즉 원시 값은 변경 불가능한 값이지만, 객체 타입의 값, 즉 객체는 변경 가능한 값이다.객체는 0개 이상의 프로퍼
🖥 함수 > 프로그래밍 언어의 함수는 일련의 과정을 문으로 구현하고 코드블록으로 감싸서 하나의 실행 단위로 정의한 것이다. 함수 정의 함수 호출 📌 함수는 재사용 할 수 있으므로 유지보수의 편의성을 높이고 코드의 신뢰성을 높인다, 또한 이름을 붙일 수 있으므로
함수의 매개변수도 타입에 따라 값에 의한 전달, 참조에 의한 전달 방식을 그대로 따른다.위 코드를 보면 객체타입의 값이 변했다.그 이유는 원시값은 재할당을 통해 새로운 원시값으로 교체했지만 객체 타입은 참조값을 할당하기 때문에 할당된 객체가 변한것이다.이러한 문제의 해
🖥 스코프 >모든 식별자는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정된다. 이를 스코프라 한다. 즉, 스코프는 식별자가 유효한 범위를 말한다. 자바스크립트 엔진은 이름이 같은 변수중 어떤 변수를 참조해야 할 것인지 결정하
변수는 생성되고 소멸되는 생성 주기가 있다.변수에 생명 주기가 없다면 한번 선언된 변수는 프로그램을 종료하지 않는 한 영원히 메모리 공간을 점유하게 된다위 코드를 보면 함수 내부에서 선언된 지역 변수 x는 foo함수가 호출되어 실행되는 동안에만 유효하다.📌 즉. 지역
var 키워드로 선언한 변수는 중복 선언이 가능하다.var 키워드로 변수를 중복 선언하면 초기화문 유무에 따라 다르게 동작한다.위 코드를 보면 x는 100으로 초기화 되었기 때문에 100이 출력되고 y는 초기화 문이 없기 때문에 무시되어 그대로 1이 출력된다.var 키
프로퍼티란 속성이란 뜻으로 자바스크립트에서 객체 내부의 속성을 의미한다.객체는 프로퍼티로 구성되고 프로퍼티는 key:value의 형식으로 객체 안에서 ,로 구분되어 할당된다.내부 슬롯과 내부 메서드는 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAScript
객체를 생성하는 다양한 방법중에 생성자 함수를 사용하여 객체를 생성하는 방식을 살펴보자.new 연산자와 함께 Object 생성자 함수를 호출하면 빈 객체를 생성하여 반환한다.생성자 함수란 new 연산자와 함께 호출하여 객체를 생성하는 함수.📌 생성자 함수애 의해 생성
일급 객체의 조건무명의 리터럴로 생성할 수 있다. 즉, 런타임에 생성이 가능하다.변수나 자료구조(객체, 배열 등)에 저장할 수 있다.함수의 매개변수에 전달할 수 있다.함수의 반환값으로 사용할 수 있다.📌 자바스크립트의 함수는 위의 조건을 모두 만족하므로 일급 객
면접에서 var 대신 let const를 사용하는 이유가 뭔가요라고 질문 받았을때 당황해서 변수 할당에 대해서만 대답하고 다른 대답은 하지 못했다. 또 언제 면접볼지 모르니 한번 제대로 정리해서 머리속에 집어넣어 보려 한다!ES5까진 변수선언 방식이 var 밖에 없었는
자바스크립트에서는 비동기 처리를 위해 콜백함수를 사용한다 이 콜백 함수의 콜백지옥을 보완하기 위해 프로미스가 생겨났다.❓ 프로미스에대해 공부하다보면 .then() 이것도 프로미스고, .catch()도 프로미스고 반환값도 프로미스고 뭐가 프로미스인지 이해가 잘 안간다.내
지금까지 스코프는 변수의 범위라고 알고 있었기 때문에 다 안다고 생각했었다.근데 어떤 자료를 읽다보니 렉시컬 스코프(?) 라는 단어를 보고 다시 공부해야 되곘다 싶어 공부해 봤다...scope의 한국어 뜻은 범위이다뜻 자체로 scope는 변수에 접근할 수 있는 범위이다
ECMAScript 사양은 소스코드를 4가지 타입으로 구분한다.전역 코드: 전역에 존재하는 소스코드, 전역에 정의된 함수, 클래스 등의 내부코드는 포함되지 않음.함수 코드: 함수 내부에 존재하는 소스코드, 함수 내부에 중첩된 함수, 클래스 등의 내부 코드는 포함되지 않
자바스크립트는 명령형, 함수형, 프로토타입기반, 객체지향 프로그래밍을 지향하는 멀티 패러다임 프로그래밍( 좋아보이는건 다 가져다가 만든 ) 언어이다.자바스크립트를 이루고 있는 거의 모든것이 객체이다 (원시 타입의 값을 제외하고 나머지)속성을 통해 여러개의 값을 하나의
그림을 보고 이 코드를 생각 했으면 프로토타입을 더 안봐도 된다.과정을 설명해 보기 전에 알아둬야 할것은📌 우선 프로토타입은 생성자 함수가 생성되는 동시에 생성된다.📌 \_\_proto\_\_는 객체가 프로토타입에 접근할때 사용하는 것이고, prototype은 생
프로토타입도 객체이기 떄문에 그냥 객체로 바꿀 수가 있다.위 그림은 이 코드의 결과이고 Person의 프로토타입을 바꾸는 방법은이렇게 코드를 짜서 me에 Person객체를 할당하면 Person.prototype는 constructor는 없고 sayHello만 있는 객체
strict는 엄격한이라는 뜻이다.strict mode는 자바스크립트 언어의 문법을 엄격하게 적용하여 에러를 발생시키는 것이다.위 코드의 결과는 x가 정의되지 않았기 때문에 오류가 나야하지만 10이 나온다.그 이유는 foo를 호출하면 x를 검색한다.foo 함수내부에는
빌트인 객체 > 자바스크립트 객체는 3개의 객체로 분류된다 표준 빌트인 객체: ECMAScript 사양에 정의된 객체 호스트 객체: 실행환경에서 추가로 제공하는 객체 사용자 정의 객체: 사용자가 직접 정의한 객체 표준 빌트인 객체 자바스크립트는 Ojbect, Str
this > this는 자식이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수다 this를 통해 자신이 속한 객체 또는 자신이 생성할 인스턴스의 프로퍼티나 메서드를 참조할 수 있다. this 바인딩은 함수 호출 방식에 의해 동적으로 결정된다. ex
클로저 > 클로저는 자바스크립트 고유의 개념이 아닌 함수를 일급 객채로 취급하는 함수형 프로그래밍 언어에서 사용되는 특성이다. "클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다" - MDN 렉시컬 스코프 자바스크립트 엔진은 함수를 어디서 호출했는지가 아니라
클래스 > 자바스크립트는 프로토타입 기반 객체지향 언어다. 자바스크립트는 클래스 문법 없이도 객체지향 프로그래밍을 할 수 있다. ES6 부터 나머지 객체지향 언어들처럼 객체지향 프로그래밍을 할 수 있도록 class 문법을 지원한다. 자바스크립트에서의 class는 함
ES6 이전의 자바스크립트의 함수는 별다른 구분 없이 다양한 목적으로 사용되었다.일반적인 함수, new 연산자와 함꼐 호출하여 생성자 함수, 객체에 바인딩 되어 메서드 등으로 다양한 방식이 가능하기 때문에 편리하긴 하지만 실수를 유발시킬 수있고. 성능면으로도 좋지 않
그래도 프론트엔드 공부한다는 사람인데 자바스크립트 동작원리를 제대로 모르고 있다고 생각이 들어서 한번 공부해봤다. 자바스크립트 동작원리 자바스크립트를 실행하기 위해서는 자바스크립트 엔진이 필요하다 대표적인 엔진으로는 google에서만든 V8엔진이다. 📌 엔진은
자바스크립트 배열로 모든 자료구조를 구현해서 사용할 수 있지만 이건 진정한 자료구조가 아니기 때문에 직접 노드를 만들어서 자료구조들을 구현해 봤다.스택은 LIFO이기 때문에 가장 위에있는 top만 알고있으면 된다.또한 노드는 데이터와 다음 노드의 정보만 알면 되기 때문
자바스크립트의 객체 자바스크립트는 동적 타이핑 언어이다. 또한 자바스크립트는 원시값을 제외하면 모두 객체이다. 이 자바스크립트 객체의 프로퍼티 또한 동적으로 정해진다. 이렇게 되면 안좋은 점은 프로퍼티가 동적으로 계속 바뀌고 추가될 수 있기 때문에 이 프로퍼티의
배열은 여러개의 값을 순차적으로 나열한 자료구조이다.이걸 배열 리터럴을 통해 생성한 배열이라 부르고 각 값을 요소라고 부른다.또한 요소는 자신의 위치를 나타내는 0이상의 정수인 인덱스를 갖는다.배열이라는 타입은 존재하지 않고 객체타입이다.배열은 배열 리터럴, Array
면접에서 객체지향언어에서의 다형성에대해 코드를 짜보라는 질문을 받았다.분명 오버로딩 오버라이딩 관련한 얘기인데 한동안 자바스크립트로 함수형 코딩만 하다보니 객체 작성방법도 잘 기억이 안나고 내 기억엔 오버로딩은 지원하지 않아서 결국엔 오버라이딩만 typeScript i