본문 바로가기
반응형
SMALL

javascript60

DOM 과 CSSOM DOM(Document Object Model)과 CSSOM(Cascading Style Sheets Object Model)은 웹 브라우저가 웹 페이지를 어떻게 해석하고 렌더링하는지에 대한 핵심적인 부분입니다. 이 두 모델은 웹 페이지의 구조와 스타일을 브라우저가 이해하고 사용자에게 시각적으로 표현할 수 있게 하는 방식을 정의합니다. DOM (Document Object Model) 정의: DOM은 HTML 문서의 구조적 표현입니다. 웹 페이지의 모든 콘텐츠와 요소를 트리 구조로 나타내며, 각 노드는 HTML 문서 내의 태그, 속성, 텍스트 등을 나타냅니다. 용도: DOM은 JavaScript를 통해 동적으로 웹 페이지의 내용, 구조, 스타일을 변경할 수 있게 해줍니다. 예를 들어, DOM API를 사.. 2024. 2. 21.
Map JavaScript의 Map 객체는 키-값 쌍을 저장하는 순서가 있는 데이터 구조입니다. **Map**은 객체와 유사하지만, 몇 가지 중요한 차이점이 있습니다. 가장 두드러진 차이는 **Map**이 어떤 값(원시 값 또는 객체 참조)도 키로 사용할 수 있다는 점입니다. 또한, **Map**은 요소의 순서를 유지하며, size 속성을 통해 쉽게 크기를 알 수 있습니다. Map의 기본적인 사용법 let map = new Map(); // 키-값 쌍 추가 map.set('key1', 'value1'); map.set('key2', 'value2'); // 키를 사용하여 값 접근 console.log(map.get('key1')); // "value1" console.log(map.get('key2')); //.. 2024. 2. 21.
Set JavaScript의 Set 객체는 중복을 허용하지 않는 값을 저장하기 위한 컬렉션입니다. **Set**을 사용하면 어떤 값이든, 원시 값이든 객체 참조이든 상관없이 유일한 값들의 집합을 생성할 수 있습니다. 이는 배열과 유사하지만, 주요 차이점은 Set 내의 모든 값이 유니크해야 한다는 것입니다. Set의 기본적인 사용법 let mySet = new Set(); // 값 추가 mySet.add(1); mySet.add(5); mySet.add("some text"); let o = {a: 1, b: 2}; mySet.add(o); // Set: {1, 5, "some text", Object {a: 1, b: 2}} // 중복 값 추가 시도 (추가되지 않음) mySet.add(1); // Set에는 이.. 2024. 2. 21.
구조 분해 할당 (Destructuring assignment) 디스트럭처링 할당(Destructuring assignment)은 배열이나 객체의 속성을 해체하여, 그 값을 개별 변수에 담을 수 있게 하는 JavaScript 표현식입니다. 이 기능을 통해 필요한 데이터만을 선택적으로 추출하거나, 함수에서 객체나 배열을 인자로 받을 때 바로 변수로 할당하는 등 코드를 더욱 간결하고 가독성 있게 만들 수 있습니다. 배열 디스트럭처링 배열 디스트럭처링은 배열의 각 요소를 변수에 할당할 수 있게 해줍니다. const numbers = [1, 2, 3, 4, 5]; const [first, second, , , fifth] = numbers; console.log(first); // 1 console.log(second); // 2 console.log(fifth); // 5.. 2024. 2. 21.
스프레드 문법과 Rest 파라미터 스프레드 문법(Spread syntax)은 JavaScript에서 배열이나 객체 리터럴을 확장하여 여러 요소로 분해하거나 여러 속성으로 분해하는 데 사용됩니다. 이 문법은 ... 세 개의 점으로 표현됩니다. 스프레드 문법은 함수 호출, 배열 리터럴, 객체 리터럴에서 유용하게 사용될 수 있습니다. 함수 호출에서의 스프레드 문법 함수의 인자를 배열로 받고 있을 때, 스프레드 문법을 사용하여 배열의 각 요소를 개별 인자로 전달할 수 있습니다. function sum(x, y, z) { return x + y + z; } const numbers = [1, 2, 3]; console.log(sum(...numbers)); // 6 배열 리터럴에서의 스프레드 문법 배열을 합치거나 복사할 때 스프레드 문법을 사용하.. 2024. 2. 21.
이터레이션 프로토콜 이터레이션 프로토콜은 자바스크립트에서 컬렉션(예: 배열, 문자열, 맵, 세트 등)의 요소를 순회하는 방법을 정의하는 규약입니다. 이 프로토콜은 Iterable 프로토콜과 Iterator 프로토콜로 구성되어 있습니다. Iterable 프로토콜 Iterable 프로토콜을 구현하는 객체는 for...of 루프와 같은 이터레이션 구문에서 사용될 수 있습니다. 이러한 객체는 Symbol.iterator 메서드를 구현해야 하며, 이 메서드는 **Iterator**를 반환해야 합니다. let iterable = { [Symbol.iterator]() { let step = 0; return { next() { step++; if (step === 1) { return { value: 'Hello', done: fal.. 2024. 2. 21.
심볼(Symbol) 자바스크립트에서 심볼(Symbol)은 ES6에서 도입된 원시 데이터 타입(primitive data type) 중 하나입니다. 심볼은 고유하고 수정 불가능한 값으로 주로 객체 속성의 키(key)로 사용됩니다. 심볼을 사용하는 주된 이유는 충돌 없는 속성명을 보장하기 위함입니다. 즉, 심볼 값을 사용하면 동일한 이름의 다른 속성과 충돌하지 않으므로, 객체 내부의 속성이나 메소드를 안전하게 숨기거나, 객체에 메타데이터를 추가하는 등의 작업에 유용합니다. 심볼의 기본 사용법 심볼은 Symbol() 함수를 호출하여 생성할 수 있습니다. 각 심볼은 고유하므로, 동일한 설명 문자열을 사용하여 두 심볼을 생성하더라도 두 심볼은 서로 다릅니다. let symbol1 = Symbol(); let symbol2 = Sym.. 2024. 2. 21.
String 객체 자바스크립트의 String 객체는 텍스트 데이터를 나타내는 데 사용되며, 다양한 메서드를 통해 문자열을 조작할 수 있습니다. 여기에는 문자열의 생성, 검색, 변환, 분할 등을 위한 메서드가 포함됩니다. 다음은 자바스크립트에서 String 객체와 관련된 몇 가지 기본적인 예제입니다: 문자열 생성 자바스크립트에서 문자열을 생성하는 방법은 여러 가지가 있습니다. 가장 간단한 방법은 작은따옴표('), 큰따옴표("), 또는 백틱(``` `)을 사용하는 것입니다. let str1 = 'Hello, world!'; let str2 = "Hello, world!"; let str3 = `Hello, world!`; 문자열 길이 문자열의 길이를 구하려면 length 속성을 사용합니다. let str = 'Hello, w.. 2024. 2. 21.
정규 표현식(Regular Expression) 정규 표현식(Regular Expression)은 문자열에서 특정 문자 조합을 찾기 위해 사용되는 패턴입니다. 자바스크립트와 같은 많은 프로그래밍 언어에서 문자열 처리에 매우 유용하게 사용됩니다. 정규 표현식을 사용하면 복잡한 검색, 대체, 추출 작업을 간단하게 수행할 수 있습니다. 기본 구문 /pattern/flags: 정규 표현식은 슬래시(/)로 시작하고 끝나며, 선택적인 플래그를 사용할 수 있습니다. g: 전역 검색 (문자열 내의 모든 패턴 매칭) i: 대소문자 구분 없이 매칭 m: 여러 줄 매칭 주요 메타 문자 .: 임의의 한 문자와 일치 ^: 문자열의 시작 $: 문자열의 끝 *: 0회 이상 반복 +: 1회 이상 반복 ?: 0회 또는 1회 \\s: 공백 문자 \\S: 공백이 아닌 문자 \\d: 숫.. 2024. 2. 21.
Number 와 Math 자바스크립트에서 Number 객체와 Math 객체는 숫자와 수학 연산을 다루는 데 사용됩니다. 두 객체 모두 유용한 프로퍼티와 메서드를 제공하여 수학적 계산을 쉽게 할 수 있게 도와줍니다. Number 객체 Number 객체는 원시 숫자 값을 래핑하기 위한 객체입니다. 숫자와 관련된 일반적인 작업을 위한 속성과 메서드를 제공합니다. 주요 프로퍼티와 메서드 Number.MAX_VALUE: JavaScript에서 표현할 수 있는 가장 큰 수 Number.MIN_VALUE: 0보다 크면서 JavaScript에서 표현할 수 있는 가장 작은 수 Number.NaN: "Not-a-Number" 값을 나타냄 Number.isFinite(number): 인수가 유한한 숫자인지 판별 Number.isInteger(num.. 2024. 2. 21.
배열의 고차함수 자바스크립트에서 배열의 고차 함수(Higher-Order Functions)는 배열을 다루는데 있어 매우 강력한 도구입니다. 고차 함수는 다른 함수를 인자로 받거나 함수를 결과로 반환하는 함수를 말합니다. 배열과 관련해서는 주로 배열의 각 요소를 순회하며, 특정 작업을 수행하는 데 사용됩니다. 여기에는 map, filter, reduce, forEach, find, every, some 등이 포함됩니다. 1. map() 배열의 각 요소에 대해 주어진 함수를 호출한 결과를 모아 새 배열을 반환합니다. 예: 각 요소를 제곱하는 경우 const numbers = [1, 2, 3, 4]; const squared = numbers.map(x => x * x); // squared: [1, 4, 9, 16] 2... 2024. 2. 10.
숫자와 리터럴 자바스크립트에서의 2147483647 + 1 자바스크립트에서 숫자는 IEEE 754 표준을 따르는 부동 소수점 형식으로 표현되며, 모든 숫자는 배정밀도(double precision) 64비트 형식으로 저장됩니다. 이러한 표현 방식은 정수와 부동 소수점 수 모두를 포괄하며, 큰 정수 값도 정밀하게 표현할 수 있습니다. 따라서 자바스크립트에서 2147483647 (2^31 - 1, int 타입의 최대값)에 1을 더하면 정확히 **2147483648**이 됩니다. 2147483647 + 1; // 2147483648 자바에서의 2147483647 + 1 자바에서는 숫자 타입이 고정 너비를 가집니다. int 타입은 32비트 정수를 저장하며, 이는 -2^31부터 2^31 - 1까지의 범위를 가집니다. 따라서 *.. 2024. 2. 10.
자바스크립트에서의 0 더글라스 크락포드는 자바스크립트가 갖는 강력한 기능과 유연성, 그리고 이를 통해 개발자가 효율적이고 표현력 있는 코드를 작성할 수 있는 방법을 강조합니다. 자바스크립트가 다른 언어와 비교했을 때 독특하게 갖는 특성 자바스크립트에는 0으로 표시되지만 0이 아닌 값이 있습니다. IEEE 754 표준은 부동 소수점 산술에 대한 국제 표준입니다. 이 표준은 컴퓨터에서 실수를 표현하고 연산하는 방법을 정의합니다. IEEE 754 표준에서는 0과 -0을 구분합니다. 이는 부동 소수점 수의 표현 방식 때문입니다. 부동 소수점 수는 일반적으로 3개의 부분으로 나뉩니다: 부호(sign), 지수(exponent), 가수(mantissa 또는 fraction)입니다. 부호 부분은 1비트로, 수가 양수인지 음수인지를 결정합니.. 2024. 2. 10.
클래스(Class) 자바스크립트의 클래스(Class)는 ES6(ECMAScript 2015)에서 도입된, 객체 지향 프로그래밍을 보다 쉽게 구현할 수 있게 해주는 구문입니다. 클래스는 사실상 프로토타입 기반 상속을 사용하는 기존 자바스크립트의 상속 메커니즘을 더 명확하고 간결하게 작성할 수 있게 해주는 "문법적 설탕(syntactic sugar)"입니다. 이는 개발자가 클래스 기반 언어에서 익숙한 방식으로 자바스크립트에서도 클래스를 정의하고 상속받을 수 있게 합니다. 클래스의 기본 구조 자바스크립트에서 클래스는 class 키워드를 사용하여 정의됩니다. 클래스 내부에는 생성자(constructor)와 메소드를 정의할 수 있습니다. 생성자는 새로운 인스턴스가 생성될 때 호출되며, 인스턴스 초기화에 사용됩니다. 메소드는 클래스의.. 2024. 2. 9.
렉시컬스코프와 클로저의 차이점 렉시컬 스코프(Lexical Scope)와 클로저(Closure)는 프로그래밍 언어에서 변수의 범위(scope)와 접근성을 결정하는 중요한 개념입니다. 두 개념은 서로 밀접하게 관련되어 있으나, 명확한 차이가 있습니다. 렉시컬 스코프(Lexical Scope) 정의: 렉시컬 스코프(또는 정적 스코프)는 변수가 코드를 작성하는 시점에 결정되는 변수의 범위를 말합니다. 즉, 변수가 함수 내부에서 정의되었다면, 그 함수 내부에서만 접근할 수 있으며, 중첩된 함수의 경우 내부 함수에서는 외부 함수의 변수에 접근할 수 있지만, 외부 함수에서는 내부 함수의 변수에 접근할 수 없습니다. 특징: 함수의 실행 컨텍스트가 아니라, 함수가 작성된 위치에 따라 변수의 접근성이 결정됩니다. 클로저(Closure) 정의: 클로저.. 2024. 2. 9.
실행 컨텍스트 ECMAScript 의 소스코드 4가지 타입 ECMAScript는 자바스크립트의 표준을 정의하는 사양입니다. ECMAScript 사양에서는 소스 코드를 네 가지 주요 타입으로 분류합니다. 이러한 분류는 소스 코드가 어떻게 실행되고 평가되는지에 대한 규칙을 정의합니다. 이 네 가지 타입은 다음과 같습니다: 1. Global Code (전역 코드) 전역 코드는 함수나 클래스와 같은 어떠한 실행 가능한 코드 블록에도 둘러싸이지 않은 코드를 의미합니다. 이 코드는 전역 스코프에서 실행됩니다. 전역 변수나 함수 정의 등을 포함할 수 있으며, 스크립트가 로드될 때 바로 실행됩니다. var a = 20; // 전역 변수 function foo() { // 이 함수는 전역 컨텍스트에 정의됨 } foo(); // 전역 컨텍스트에서 foo 함수 호출 2. Funct.. 2024. 2. 2.
생성자함수 this 자바스크립트에서 생성자 함수는 객체를 생성하기 위해 사용되는 특별한 함수입니다. 생성자 함수에서 this 키워드는 생성될 새로운 객체를 가리킵니다. 이를 통해 생성자 함수 내에서 객체의 속성과 메서드를 정의할 수 있습니다. 생성자 함수의 작동 원리 새 객체 생성: new 연산자와 함께 생성자 함수를 호출하면 자바스크립트 엔진은 먼저 새로운 빈 객체를 만듭니다. this에 바인딩: 생성된 빈 객체는 생성자 함수의 **this**에 바인딩됩니다. 이로 인해 생성자 함수 내부에서 **this**를 사용하면 새로 만들어진 객체를 가리키게 됩니다. 속성 및 메서드 추가: 생성자 함수 내에서 **this**를 사용해 새 객체에 속성과 메서드를 추가합니다. 객체 반환: 생성자 함수의 실행이 끝나면 **this**에 .. 2024. 2. 2.
전역객체 자바스크립트에서 전역 객체는 코드가 실행되는 환경에 따라 다르게 정의되는 객체입니다. 전역 객체는 모든 전역 변수와 함수를 포함하며, 스크립트가 실행되는 전체 환경을 나타냅니다. 다양한 환경(브라우저, Node.js 등)에서 다른 전역 객체가 사용됩니다. 브라우저 환경에서의 전역 객체: window 브라우저에서는 **window**가 전역 객체입니다. window 객체는 브라우저 창을 나타내며, DOM 요소를 조작하거나 브라우저와 관련된 기능을 수행하는 메서드와 속성을 포함합니다. 예를 들면: window.document: 현재 문서에 접근 window.alert(): 알림 창 띄우기 window.innerWidth, window.innerHeight: 브라우저 창의 내부 크기 전역 변수와 함수 선언: .. 2024. 2. 2.
프로토타입 체인 프로토타입 체인(Prototype Chain)은 JavaScript의 객체 지향 프로그래밍에서 중요한 개념 중 하나로, 객체 간의 상속 및 속성 및 메서드 검색을 위한 메커니즘을 설명합니다. 이 개념은 JavaScript의 객체 지향 특성을 이해하는 데 중요합니다. 프로토타입 체인은 다음과 같은 핵심 개념으로 구성됩니다: 프로토타입(Prototype): JavaScript 객체는 프로토타입을 가질 수 있습니다. 프로토타입은 다른 객체로부터 속성과 메서드를 상속받을 수 있도록 하는 객체입니다. 프로토타입 체인(Prototype Chain): JavaScript에서 객체는 프로토타입 체인을 따라 상위 프로토타입 객체의 속성과 메서드를 검색할 수 있습니다. 객체가 어떤 속성 또는 메서드를 찾을 때, 현재 객체.. 2024. 2. 2.
화살표 함수가 논컨스트럭터 구조인 이유와 반례 화살표 함수가 non-constructor(논컨스트럭터) 구조인 이유는 다음과 같습니다: 생성자 함수로 사용할 수 없음: 화살표 함수는 new 키워드와 함께 사용할 수 없습니다. 생성자 함수로 사용하려고 하면 에러가 발생합니다. 화살표 함수는 인스턴스를 생성하거나 초기화하는 데 사용할 수 없습니다. this 바인딩: 화살표 함수는 자체적으로 **this**를 가지지 않고, 외부 스코프(함수나 블록)의 **this**를 상속받습니다. 이로 인해 화살표 함수 내부에서 **this**를 수정할 수 없습니다. 이 특성은 일반적인 함수와 다릅니다. 예제를 통해 살펴보겠습니다: function regularFunction() { this.value = 42; } const arrowFunction = () => {.. 2024. 2. 2.
const 키워드의 객체 const 키워드를 사용하여 선언한 변수는 재할당이 불가능한 변수를 나타냅니다. 이것은 변수가 한 번 초기화되면 다른 값을 할당할 수 없다는 것을 의미합니다. 그러나 **const**로 선언한 변수가 객체를 참조하는 경우, 객체 자체를 변경할 수 있습니다. 다시 말해, const 변수가 참조하는 객체의 속성을 변경하는 것은 허용됩니다. 예를 들어: const person = { name: "Alice", age: 30 }; // 객체 속성 변경 가능 person.age = 31; console.log(person); // 출력 결과: { name: 'Alice', age: 31 } 위의 코드에서 person 변수는 **const**로 선언되었지만, 객체 자체를 변경하지 않고 객체의 속성을 변경하였으므로 .. 2024. 2. 2.
호이스팅 호이스팅(Hoisting)은 JavaScript에서 변수와 함수 선언이 소스 코드 내에서 물리적 위치에 관계없이 해당 스코프(scope)의 맨 위로 끌어올려지는 동작을 의미합니다. 이 동작은 JavaScript 엔진에 의해 실행되며 코드를 해석하고 실행하기 전에 수행됩니다. 호이스팅은 다음 두 가지 주요 요소에서 발생합니다: 변수 호이스팅(Variable Hoisting): 변수 선언(var 키워드로 선언한 변수)이 해당 스코프의 맨 위로 끌어올려지는 현상입니다. 변수 선언은 초기화(값 할당) 단계까지 끌어올려지지만, 초기화는 호이스팅되지 않습니다. 즉, 변수가 선언되어 있지만 초기화되기 전에 접근하면 **undefined**가 반환됩니다. 예제: console.log(x); // undefined va.. 2024. 2. 2.
일급 객체 일급 객체(First-Class Object)는 프로그래밍 언어에서 다음의 세 가지 조건을 모두 충족하는 객체를 가리킵니다: 변수에 할당 가능(Assignable): 일급 객체는 변수에 할당할 수 있어야 합니다. 즉, 객체를 변수에 저장하거나 함수의 매개변수로 전달할 수 있어야 합니다. 함수의 매개변수로 전달 가능(Passable as a Parameter): 일급 객체는 함수의 매개변수로 전달할 수 있어야 합니다. 함수 내에서 다루거나 조작할 수 있어야 합니다. 반환 값으로 사용 가능(Returnable): 일급 객체는 함수의 반환 값으로 사용할 수 있어야 합니다. 다른 함수 내에서 반환되거나, 다른 함수에 의해 생성될 수 있어야 합니다. JavaScript에서는 함수가 일급 객체로 취급됩니다. 이것은.. 2024. 2. 2.
ECMAScript 에서의 공유에 의한 전달 ECMAScript (JavaScript)에서 "공유에 의한 전달"은 객체와 배열과 같은 참조 타입(reference type)에 적용되는 개념입니다. JavaScript에서 객체와 배열은 변수나 함수에 할당될 때 그 값 자체가 아닌 참조(reference)가 전달됩니다. 이것은 "공유에 의한 전달"이라고 표현될 수 있습니다. 즉, 객체나 배열을 여러 변수에 할당하면 모두 동일한 객체 또는 배열을 참조하게 됩니다. 다음은 "공유에 의한 전달"을 보여주는 JavaScript 예제입니다: let originalArray = [1, 2, 3]; let referenceArray = originalArray; // 참조 복사 referenceArray.push(4); // referenceArray를 수정 co.. 2024. 2. 2.
옵셔널 체이닝 ECMAScript 11 (ES11), 또는 ECMAScript 2020는 JavaScript의 최신 버전 중 하나입니다. 이 버전에서 도입된 중요한 기능 중 하나는 "옵셔널 체이닝(Optional Chaining)"입니다. 옵셔널 체이닝은 객체의 속성을 안전하게 접근하고 검사하기 위한 기능으로, 코드를 보다 간결하고 안정적으로 만들어줍니다. 옵셔널 체이닝은 객체의 속성을 접근할 때 객체가 존재하지 않는 경우에도 오류를 발생시키지 않고 체이닝된 속성을 검사합니다. 이 기능은 많은 코드에서 널 값 또는 언디파인드(Null or Undefined)를 다룰 때 유용하게 사용됩니다. 옵셔널 체이닝의 사용법은 다음과 같습니다: // 객체의 중첩된 속성을 안전하게 접근 const person = { name: 'J.. 2024. 2. 2.
동적 타입 언어와 정적 타입 언어 동적 타입 언어와 정적 타입 언어는 프로그래밍 언어의 타입 시스템에 대한 두 가지 주요 접근 방식입니다. 이 두 접근 방식에는 각각 장단점이 있으며, 언어의 선택은 프로젝트의 요구 사항과 개발자의 선호도에 따라 다를 수 있습니다. 동적 타입 언어 (Dynamic Typing Language): 타입 검사 런타임 시간: 동적 타입 언어는 변수의 타입이 런타임 시간에 결정됩니다. 즉, 변수를 선언할 때 타입을 명시적으로 지정하지 않아도 됩니다. 이로 인해 개발자가 유연하게 코드를 작성할 수 있습니다. 간결함과 유연성: 동적 타입 언어는 간결하고 유연한 문법을 제공하며, 런타임 시간에 변수의 타입을 동적으로 변경할 수 있습니다. 이는 프로토타입 기반의 객체 지향 언어인 JavaScript와 Python과 같은.. 2024. 2. 2.
숫자타입 ECMAScript (JavaScript)에서 모든 수를 실수로 처리하며 정수만을 표현하기 위한 별도의 데이터 타입은 존재하지 않습니다. JavaScript의 number 타입은 모든 숫자를 부동 소수점 형태로 저장하며, 정수와 실수를 구분하지 않습니다. 이는 JavaScript의 유연한 특성 중 하나이지만 때로는 정수 연산이 필요한 경우에는 주의가 필요할 수 있습니다. 정수 연산을 위해 JavaScript에서는 다음과 같은 방법을 사용할 수 있습니다: Math 객체를 활용한 정수 연산: Math 객체를 사용하여 정수 연산을 수행할 수 있습니다. 예를 들어, Math.floor(), Math.ceil(), Math.round() 등의 함수를 사용하여 소수를 정수로 변환하거나, 나눗셈 연산 후에 결과를 반.. 2024. 2. 2.
가비지 콜렉터 가비지 콜렉터(Garbage Collector)는 프로그램이 동적으로 할당한 메모리 중에서 더 이상 사용되지 않는 메모리를 자동으로 탐지하고 해제하는 기능을 수행하는 컴퓨터 프로그램 또는 일부 언어의 런타임 환경에서 제공하는 기능입니다. 가비지 콜렉터는 메모리 누수(Memory Leak)를 방지하고 프로그램의 안정성과 성능을 향상시키는 데 도움이 됩니다. 가비지 콜렉션은 다음과 같은 주요 원리로 동작합니다: 참조 계산(Reference Counting): 가장 간단한 형태의 가비지 콜렉션은 참조 계산을 사용합니다. 이 방식에서는 객체가 다른 객체에 의해 참조될 때마다 참조 횟수를 증가시키고, 참조가 끊길 때마다 참조 횟수를 감소시킵니다. 참조 횟수가 0이 되면 해당 객체는 더 이상 사용되지 않으므로 메모.. 2024. 2. 2.
var 의 단점 모던 자바스크립트 Deep Dive - 자바스크립트의 기본 개념과 동작 원리를 읽으며 정리했습니다. 함수 레벨 스코프: var 키워드는 함수 레벨 스코프를 가지고 있습니다. 이는 변수가 함수 내에서 정의되면 함수 내 어디에서든 접근할 수 있다는 의미입니다. 이로 인해 변수가 의도치 않게 함수 스코프를 벗어나 사용될 수 있으며, 이는 예상치 못한 부작용을 초래할 수 있습니다. function example() { if (true) { var x = 10; } console.log(x); // 10이 출력됨 } 전역 변수 문제: **var**로 선언된 변수가 블록 스코프를 지원하지 않기 때문에 블록 내에서 선언된 변수도 함수 스코프에 속하게 됩니다. 이로 인해 블록 내에서 선언한 변수가 의도치 않게 전역 스.. 2024. 2. 2.
안녕하세요. 자바스크립트의 미흡함을 느끼며 진행 한 공부를 메모하는 형식으로 진행됩니다.모던 자바스크립트 Deep Dive - 자바스크립트의 기본 개념과 동작 원리를 읽으며 정리할 예정이며, 추후 기초가 어느정도 정리되면  자바스크립트는 왜 그 모양일까더글러스 크락포드가 알려주는 위험한 자바스크립트를 안전하게 사용하는 법책을 다룰 예정이고 알고리즘에 대해서도 공부할 예정입니다. 모든 글에 대해 질문 환영입니다!  궁금한 점, 잘못된 점, 첨언하고 싶은 점 전부 좋아요 함께 배워나가봅시다. 2024. 2. 2.
728x90
반응형
LIST