하나의 데이터 타입을 다른 데이터 타입으로 변환하는 것을 타입 캐스팅(type casting), 즉 형 변환이라고 합니다. 개발 과정에서는 값의 데이터 타입을 다른 타입으로 바꿔야 하는 경우가 종종 발생하며, 특정 상황에서는 자바스크립트가 자동으로 타입 변환을 수행해 줍니다. 형 변환의 종류 1. 자동 형 변환 (Automatic Type Conversion) 조건문에서 자바스크립트는 불리언(boolean) 값을 기대합니다. 따라서 if 표현식을 평가할 때 괄호 안의 값이 일시적으로 불리언 타입으로 변환됩니다. if (val) {
JavaScript에서 Number.NEGATIVE_INFINITY 솞性은 음의 무한대(-Infinity) 값을 나타내는 특수한 값입니다. JavaScript가 표현할 수 있는 최솟값보다 더 작은 음수가 계산되면, 그 값은 자동으로 음의 무한대로 처리됩니다.Number.NEGATIVE_INFINITY의 동작 원리JavaScript의 숫자는 IEEE 754 배정밀도 부동소수점 방식으로 저장되며, 표현 가능한 최댓값은 Number.MAX_VALUE(약 1.7976931348623157e+308)입니다. 이 범위를 벗어나는 음수 값은 -
JavaScript에는 undefined, null, boolean, string, number라는 5가지 원시 타입(primitive type)이 있습니다. 이 외의 모든 값은 객체(object)입니다.원시 타입 중 boolean, string, number는 각각 Boolean, String, Number 생성자로 만들어진 래퍼 객체(wrapper object)로 감쌀 수 있습니다.래퍼 객체에서 다시 원시 값을 꺼내려면 객체에 대해 valueOf() 메서드를 호출하면 됩니다.예제 코드console.log(typeof true);
자바스크립트에서 이벤트 흐름(Event Flow)은 세 가지 핵심 개념으로 구성됩니다.이벤트 타깃(Event Target) — 이벤트가 실제로 발생한 DOM 객체를 의미합니다.이벤트 버블링(Event Bubbling) — 아래에서 자세히 설명합니다.이벤트 캡처링(Event Capturing) — 아래에서 자세히 설명합니다.이벤트 버블링(Event Bubbling)이란?이벤트 버블링은 한 요소가 다른 요소 안에 중첩되어 있고, 두 요소 모두 동일한 이벤트(예: 클릭)에 대한 리스너를 등록했을 때 이벤트 핸들러가 호출되는 순서를 말합니
자바스크립트 Screen 객체란?자바스크립트에서 window.screen 속성은 현재 창(window)과 연결된 화면(screen) 객체에 대한 참조를 반환합니다.Screen 인터페이스를 구현하는 screen 객체는 현재 창이 렌더링되고 있는 화면의 정보를 확인하기 위한 특수한 객체입니다. 이 객체가 제공하는 다양한 속성을 활용하면 사용자(클라이언트) 화면의 크기, 색상 깊이, 방향 등 여러 정보를 읽어오거나 일부 속성을 설정할 수 있습니다.Screen 객체의 주요 속성Screen.availTop — 영구적 또는 준영구적인 운영체제
프로그래밍 언어의 종류와 관계없이 메모리 생명 주기(memory life cycle)는 거의 항상 동일한 패턴을 따릅니다.필요한 메모리를 할당한다할당된 메모리를 사용한다(읽기, 쓰기)더 이상 필요하지 않을 때 할당된 메모리를 해제한다위 세 단계 중 두 번째 단계는 모든 언어에서 명시적(explicit)입니다. 즉, 할당된 메모리를 실제로 사용하는 작업은 개발자가 직접 수행해야 합니다.반면 첫 번째와 마지막 단계는 C언어 같은 저수준(low-level) 언어에서는 명시적으로 처리해야 하지만, 자바스크립트처럼 고수준(high-level
프로그래밍 언어의 종류와 무관하게, 메모리의 생명 주기(life cycle)는 거의 항상 동일한 패턴을 따릅니다.필요한 메모리를 할당한다할당된 메모리를 사용한다 (읽기, 쓰기)더 이상 필요하지 않을 때 할당된 메모리를 해제한다이 중 두 번째 단계인 메모리 사용은 모든 언어에서 개발자가 명시적으로 수행해야 하는 작업입니다.반면 첫 번째 단계(할당)와 마지막 단계(해제)는 C와 같은 저수준(low-level) 언어에서는 개발자가 직접 처리해야 하지만, 자바스크립트처럼 고수준(high-level) 언어에서는 대부분 암묵적으로 자동 처리됩
자바스크립트에서 10진수를 16진수로 변환하는 것은 생각보다 간단합니다. Number 객체의 toString() 메서드를 활용하면 진법(base)을 인자로 전달하여 원하는 진수의 문자열로 손쉽게 변환할 수 있습니다.toString() 메서드로 16진수 변환하기toString 메서드는 진법(base)을 인자로 받습니다. 여기에 16을 전달하면 해당 숫자가 16진수 문자열로 변환됩니다.예제 코드console.log(Number(255).toString(16))console.log(Number(17).toString(16))실행 결과ff
JavaScript로 URL을 새 탭에서 열 수 있을까?URL을 새 탭으로 열리게 할지 여부는 브라우저의 동작 방식과 사용자의 브라우저 설정에 따라 결정됩니다. 즉, 코드를 통해 링크가 반드시 새 탭(새 창이 아닌)에서 열리도록 강제하는 방법은 없습니다.target=_blank 속성 활용하기다만, 사용자의 브라우저 설정에 따라 새 탭 또는 새 창 중 하나로 열리도록 허용하고 싶다면 앵커(<a>) 태그에 다음 속성을 추가하면 됩니다.target=_blank이 속성은 브라우저에게 현재 페이지를 그대로 유지한 채 링크를 새 탭
자바스크립트 배열 순회에 for...in을 사용하면 안 되는 이유 자바스크립트에서 for...in 루프를 사용해 배열을 반복하는 것은 여러 가지 이유로 좋지 않은 습관입니다. 일반적인 반복문과 비교하면서 그 원인을 자세히 살펴보겠습니다. 일반적인 반복문 사용 예시 let arr = [] arr[4] = 5 for (let i = 0; i < arr.length; i++) { console.log(arr[i]) } 출력 결과 undefined undefined undefined und
아니요, 자바스크립트에는 null, undefined 또는 빈 값을 한 번에 판별해 주는 표준 내장 함수는 없습니다. 대신 자바스크립트에는 truthy와 falsy라는 고유한 개념이 존재합니다. 조건문(if문 등)에서 true로 강제 변환(coercion)되는 값을 truthy 값이라고 부르고, false로 평가되는 값을 falsy 값이라고 합니다. falsy 값 목록 ECMAScript(ES) 명세에 따르면, 다음 값들은 조건문 컨텍스트에서 항상 false로 평가됩니다. null undefined NaN 빈 문자열 () 0 (숫
카멜 케이스(Camel Case)는 여러 단어로 구성된 문구를 작성할 때, 문구 중간에 위치한 각 단어의 첫 글자를 대문자로 표기하고 단어 사이에 공백이나 구두점을 넣지 않는 명명 규칙입니다. 주로 프로그래밍에서 변수명이나 클래스명을 작성할 때 널리 사용됩니다. 예를 들어 Concurrent hash maps라는 문구를 카멜 케이스로 변환하면 다음과 같습니다. ConcurrentHashMaps JavaScript로 카멜 케이스 변환 함수 구현하기 JavaScript에서는 문자열을 인자로 받아 카멜 케이스로 변환하는 함수를 다음과
JavaScript에서 GUID 또는 UUID를 생성해야 하는 경우는 생각보다 많습니다. 데이터베이스의 고유 식별자, 세션 ID, 파일명 중복 방지 등 다양한 상황에서 활용됩니다. 이 글에서는 대표적인 두 가지 방법, 즉 Math.random() 함수를 활용하는 방법과 npm의 uuid 모듈을 사용하는 방법을 예제 코드와 함께 소개합니다.Math.random() 함수 활용하기별도의 라이브러리 설치 없이 간단히 UUID 형태의 문자열을 만들고 싶다면 아래 코드처럼 Math.random() 함수를 사용할 수 있습니다.function c
JavaScript에서 문자열 안에 특정 문자가 몇 번 등장하는지 확인하는 가장 간단한 방법은 문자열을 처음부터 끝까지 순회하면서 해당 문자가 나타날 때마다 개수를 세는 것입니다.예제아래 예제에서는 for 반복문을 사용해 문자열의 각 문자를 하나씩 검사하고, 찾고자 하는 문자와 일치하면 카운트를 1씩 증가시킵니다.let s = hello world!; let searchChar = l; let count = 0; for(let i = 0; i < s.length; i++) { if(s[i] == searchChar)
자바스크립트의 split([separator, [limit]]) 메소드는 문자열(String) 객체를 지정한 구분자(separator)를 기준으로 잘라내어, 여러 개의 부분 문자열로 이루어진 배열을 반환하는 메소드입니다. 문자열을 다룰 때 가장 자주 사용되는 핵심 메소드 중 하나이므로, 동작 방식을 정확히 이해해 두는 것이 좋습니다.split() 메소드 기본 사용 예제아래 예제에서는 쉼표(,)로 구분된 문자열을 split() 메소드를 사용해 배열로 변환합니다.let a = hello,hi,bonjour,namaste; let gre
자바스크립트의 String 객체는 문자열을 다루기 위한 다양한 헬퍼 메서드를 제공합니다. String 객체는 자바스크립트의 원시(primitive) 문자열 타입을 감싸는 역할을 하며, 자바스크립트는 원시 문자열과 String 객체 간의 변환을 자동으로 처리하기 때문에 원시 문자열에서도 String 객체의 모든 메서드를 바로 호출할 수 있습니다.자주 사용되는 문자열 메서드다음은 자바스크립트에서 문자열에 사용할 수 있는 대표적인 메서드들입니다.concat() — 두 문자열을 하나로 합쳐 새로운 문자열을 반환합니다.indexOf() —
자바스크립트에는 값이 없음을 나타내는 두 가지 값이 있습니다. 바로 null과 undefined입니다. 이 두 값은 비슷해 보이지만 의미와 용도가 완전히 다르기 때문에 상황에 맞게 구분해서 사용해야 합니다. undefined란? undefined는 변수에 아직 값이 할당되지 않았음을 의미하는 자바스크립트의 원시(primitive) 값입니다. 변수를 선언만 하고 초기화하지 않으면 자동으로 undefined가 됩니다. 또한 평가하려는 변수에 값이 없거나, 함수가 명시적으로 값을 반환하지 않을 때도 undefined가 반환됩니다. 예
JavaScript에서 비동기(asynchronous) 호출의 결과값을 반환해야 하는 상황은 매우 자주 발생합니다. 문제를 제대로 이해하려면 먼저 비동기 함수의 동작 방식부터 살펴볼 필요가 있습니다.예를 들어 foo라는 비동기 함수가 있고, 이 함수는 일정 시간이 지난 후에야 데이터를 제공한다고 가정해 보겠습니다. 이런 비동기 함수는 크게 두 가지 방식으로 결과를 전달할 수 있습니다.콜백(Callback): 데이터가 준비되면 실행될 함수를 인자로 받아 나중에 호출하는 방식프로미스(Promise): 미래에 확정될 값을 담는 객체를 반
Promise의 finally() 메서드란?프로미스(Promise)가 처리(settled)되면, 즉 이행(fulfilled)되거나 거부(rejected)되었을 때, finally() 메서드에 지정된 콜백 함수가 호출됩니다. finally() 메서드 역시 새로운 Promise를 반환하기 때문에 then(), catch()와 같이 메서드 체이닝(method chaining)이 가능합니다.finally()를 활용하면 프로미스가 성공적으로 이행되었는지 거부되었는지와 관계없이, 프로미스가 처리된 후 반드시 실행해야 하는 코드를 한곳에서 관리
JavaScript에서 배열에 새로운 요소를 추가하는 방법은 삽입 위치에 따라 달라집니다. 배열 끝에 요소를 추가하려면 push() 메서드를, 배열 맨 앞에 추가하려면 unshift() 메서드를 사용합니다. 그리고 특정 인덱스 위치에 삽입하려면 splice() 메서드를 활용하면 됩니다.각 방법의 사용 예제를 자세히 살펴보겠습니다.1. push() – 배열 끝에 요소 추가push() 메서드는 배열의 마지막에 하나 이상의 요소를 추가하고, 변경된 배열의 길이를 반환합니다.예제let arr = [test, 1, 2, hello, 23.5