본문 바로가기

JavaScript14

JavaScript에서 == 와 === 차이점 ==와 ===는 비교를 통해 두 값의 동일성을 판단하는 데 사용됩니다. 두 연산자 모두 값이 같으면 true를, 그렇지 않으면 false를 반환합니다. ==와 ===는 동일성을 판단하는 기준이 달라 어느 연산을 사용할지 선택하는 것은 어떤 종류의 비교를 수행하려고 하는지에 달려있습니다. == 는 비교전 type coercion을 수행하기 때문에 느슨한 동등으로 불립니다. 이 말은, 비교하는 두 피연산자의 데이터 타입이 서로 다를 경우, JavaScript 엔진이 자동으로 한 피연산자의 타입을 다른 피연산자의 타입과 동일하게 변환하여 비교를 가능하게 한다는 의미입니다. 하나의 피연산자가 문자열일 경우: 다른 피연산자가 문자열로 변환됩니다.하나의 피연산자가 숫자일 경우: 다른 피연산자가 숫자로 변환됩니다.하.. 2024. 11. 7.
Strict Mode (엄격 모드) Strict mode는 JavaScript에 ECMAScript 5에서 도입된 기능으로, 더 엄격한 규칙을 적용하여 코드를 작성할 수 있게 합니다. 엄격 모드는 더 엄격한 구문 해석과 오류 처리를 적용하여 코드가 더욱 안전하게 실행되도록 합니다.엄격 모드에서는 선언되지 않은 변수 사용이 금지되며, 이 외에도 여러 규칙이 강제됩니다. 일반 JavaScript에서는 쓰기 불가능한 속성에 값을 할당하더라도 오류 메시지를 받지 않습니다.하지만 **엄격 모드(strict mode)**에서는 다음과 같은 경우 오류가 발생합니다:쓰기 불가능한 속성에 값 할당**읽기 전용 속성(getter-only property)**에 값 할당존재하지 않는 속성, 변수, 객체에 값 할당이러한 제한 덕분에 엄격 모드는 잘못된 할당을 .. 2024. 11. 7.
프로토타입 (Prototype) JavaScript에서 함수가 생성될 때 해당 함수에는 자동으로 prototype 속성이 추가되어, 이 함수로부터 생성된 객체들이 메서드와 속성을 공유할 수 있는 구조를 갖습니다. 이 프로토타입 객체는 메서드와 속성을 추가할 수 있는 공간을 제공하여, 해당 함수로 생성된 모든 객체에 상속을 쉽게 적용할 수 있습니다. 함수가 new 키워드로 호출되면, 생성자의 prototype 속성이 새로 생성된 객체의 프로토타입이 됩니다.상단 코드 확인해보면 :Car()라는 생성자 (Constructor) 함수를 정의했습니다.그 다음 프로토타입에 속성 "car.prototype.color = "Red"를 추가하여 속성에 값을 빨간 색으로 정의 했습니다. 이제 Car.prototype.color로 이 속성을 접근 할 수 .. 2024. 11. 6.
이벤트 루프 (Event Loop) JavaScript가 코드를 한 번에 한 줄씩, 순차적으로 실행한다는 의미입니다. 모든 JavaScript 코드는 메인 스레드에서 (싱글 스레드란 여러 작업을 병렬로 처리하지 않고, 순차적으로 처리하는 구조를 의미합니다) 실행되며, 한 번에 하나의 작업만 수행할 수 있습니다. 따라서 이 스레드에서는 여러 코드를 병렬로 동시에 실행할 수 있는 방법이 없습니다. 함수 실행 스택이 비워질 때마다 대기열(큐)에서 작업을 꺼내어 실행 스택에 배치하는 역할을 합니다. 이벤트 루프 작동 방식 :호출 스택(Call Stack):JavaScript는 현재 실행 중인 함수(프로그램이 실행되는 위치)를 추적하기 위해 호출 스택을 사용합니다. 각 함수 호출은 호출 스택에 추가되고, 완료되면 스택에서 제거됩니다.콜백 큐(Cal.. 2024. 10. 30.
콜 스택 (Call Stack)과 힙 (Heap) 할당(Allocation): 변수를 선언할 때 메모리가 할당됩니다. JavaScript에서는 이 과정이 자동으로 처리됩니다.사용(Using): 할당된 메모리를 사용하여 데이터를 저장하거나 읽어옵니다.해제(Releasing): 더 이상 사용하지 않는 메모리는 해제됩니다. JavaScript에서는 이 과정도 가비지 컬렉션(Garbage Collection)으로 자동 관리됩니다.여러 함수들(functions)을 호출하는 스크립트에서 해당 위치를 추적하는 인터프리터를 위한 메커니즘입니다. 현제 어떤 함수가 실행중인지, 그 함수 내에서 어떤 함수가 호출되어야 하는지, 등을 제어합니다. JavaScript 엔진은 단일 호출 스택만 가지고 있으므로 한 번에 하나의 작업만 수행할 수 있습니다. 스크립트를 실행하면 Ja.. 2024. 10. 30.
IIFE (Immediately Invoked Function Expression) 즉시 실행 함수 표현 (IFFE)은 정의되자마자 즉시 실행 되는 함수입니다. 이들은 변수에 대한 로컬 스코프를 생성하여 전역 (Global) 스코프를 오염시키는 것을 방지하는 데 주로 사용됩니다.  즉시 실행 : IIFE 함수는 즉시 실행되어, 별도의 함수 호출 없이 함수 내의 코드가 실행되도록 보장합니다.캡슐화 : IIFE는 변수에 대한 개인적인 스코프를 생성하여 전역 스코프를 오염시키는 것을 방지하고, 코드의 다른 부분과의 충돌을 피할 수 있습니다.익명 또는 명명 가능 : IIFE는 익명 함수(이름 없이) 또는 명명된 함수(이름이 있는)로 정의할 수 있습니다. 익명 IIFE가 더 일반적이지만, 명명된 IIFE는 디버깅 시 유용할 수 있습니다.익명 IIFE는 message 변수를 캡슐화하여, 전역 스코.. 2024. 10. 1.