Object.is() 메서드란?Object.is() 메서드는 ES6(ES2015)에서 새롭게 도입된 기능으로, 두 값을 비교하는 데 사용됩니다. 비교 대상은 숫자나 문자열 같은 원시 타입(primitive)일 수도 있고 객체일 수도 있습니다.이 메서드는 기존의 == 또는 === 연산자보다 한층 더 정밀하고 직관적인 비교를 수행한다는 점이 큰 특징입니다.=== 연산자와의 차이점Object.is()는 === 연산자와 거의 동일하게 작동하지만, 다음 두 가지 경우에서 서로 다른 결과를 반환합니다.NaN 비교: Object.is(NaN,
JavaScript에서는 call(), apply(), bind() 세 가지 메서드를 사용하여 다른 객체의 메서드를 차용(borrow)할 수 있습니다. 이를 통해 코드 재사용성을 높이고, 객체 간에 기능을 손쉽게 공유할 수 있습니다.메서드 차용이란?메서드 차용이란 한 객체에 정의된 메서드를 다른 객체가 자신의 것처럼 호출하여 사용하는 기법입니다. this 키워드가 참조하는 객체를 명시적으로 지정함으로써 가능합니다.call(): 인수를 개별적으로 전달하며 즉시 함수를 실행합니다.apply(): 인수를 배열 형태로 전달하며 즉시 함수를
JavaScript에서 함수를 호출할 때 매개변수를 비워두면 어떻게 될까요? ES6(ES2015)부터 도입된 기본 매개변수(Default Parameters) 문법을 사용하면, 인자가 전달되지 않거나 undefined가 넘어올 경우 자동으로 미리 지정한 기본값이 적용됩니다. 이를 활용하면 빈 매개변수로 함수를 호출해도 오류 없이 의도한 동작을 수행할 수 있습니다. 기본 매개변수의 동작 원리 함수를 선언할 때 매개변수에 기본값을 지정해 두면, 호출 시 해당 인자가 생략되더라도 기본값이 대신 사용됩니다. 예를 들어 function m
JavaScript에서 변수를 정의하는 방법은 크게 세 가지가 있습니다. 각 키워드는 스코프(scope)와 호이스팅(hoisting) 동작에서 중요한 차이를 보이므로, 특성을 정확히 이해하고 상황에 맞게 사용하는 것이 좋습니다. let – 2015년(ES6)에 도입된 키워드로, 블록 스코프(block scope)를 갖는 변수를 선언할 수 있습니다. let으로 선언된 변수는 호이스팅되지 않으므로, 선언문 이전에 접근하면 참조 오류(ReferenceError)가 발생합니다. var – 함수 스코프(function scope)를 갖는
JavaScript에서 함수에 값을 전달할 때, 기본 타입(primitive type)과 객체 타입(object type)은 서로 다른 방식으로 처리됩니다. 기본 타입(숫자, 문자열, 불리언 등): 값 자체가 복사되어 전달됩니다. 따라서 함수 내부에서 값을 변경해도 원본 변수에는 영향을 주지 않습니다. 객체 타입: 객체의 참조(reference)가 전달됩니다. 함수 내부에서 객체의 속성을 수정하면 원본 객체에도 그 변경이 그대로 반영됩니다. 다음은 기본 타입과 객체 타입을 함수에 전달하고 호출하는 예제 코드입니다 −
JavaScript의 내보내기(Export)와 가져오기(Import)란?JavaScript의 모듈 시스템에서 export(내보내기)는 한 파일에 작성된 함수, 객체, 변수 등을 다른 파일에서도 사용할 수 있도록 외부로 공개하는 기능입니다. 반대로 import(가져오기)는 내보내진 요소를 다른 파일로 불러와 재사용하는 기능이죠. 이 두 가지를 활용하면 코드를 기능별로 분리해 관리할 수 있어 유지보수성과 가독성이 크게 향상됩니다.참고 − 이 예제를 실행하려면 localhost 서버를 구동해야 합니다.다음은 JavaScript
JavaScript 함수에서 명명된 인수란?JavaScript는 Python의 키워드 인수처럼 명명된 인수(named arguments)를 위한 공식 문법을 제공하지 않습니다. 하지만 객체 구조 분해 할당(object destructuring)을 활용하면 동일한 효과를 손쉽게 구현할 수 있습니다. 함수 호출 시 객체 리터럴 형태로 값을 전달하고, 함수 선언부의 매개변수 자리에서 구조 분해와 함께 기본값을 지정하는 방식입니다.이 방식의 주요 장점은 다음과 같습니다.인수 순서 무관: 값의 순서를 외울 필요 없이 이름으로 전달하므로 실수
프로미스(Promise)는 자바스크립트에서 비동기 작업을 처리하기 위한 핵심 객체입니다. 프로미스를 사용하면 값이 언제 사용 가능해질지 미리 알 수 없는 상황에서도, 결과가 준비되었을 때 이를 처리할 수 있습니다. 대표적인 예로 서버에서 데이터를 가져오는(fetch) 작업이 있습니다. 프로미스의 세 가지 상태 프로미스는 생성된 시점부터 다음 세 가지 상태 중 하나를 가집니다. Pending(대기) – 아직 결과가 확정되지 않은 초기 상태 Fulfilled(이행) – 작업이 성공적으로 완료되어 값을 반환한 상태 Rejected(거부
JavaScript 그룹화 연산자(Grouping Operator)란?그룹화 연산자는 괄호 ( )를 사용하여 표현식이 평가되는 순서, 즉 연산자 우선순위(precedence)를 제어하는 연산자입니다.JavaScript에서는 곱셈(*)과 나눗셈(/)이 덧셈(+)과 뺄셈(-)보다 먼저 계산됩니다. 하지만 그룹화 연산자를 사용하면 이러한 기본 우선순위 규칙보다 우선하여 괄호 안의 표현식을 먼저 평가하도록 지정할 수 있습니다.예제 코드다음은 JavaScript에서 그룹화 연산자를 활용해 연산 우선순위를 지정하는 방법을 보여주는 코드입니다.
ES6(ECMAScript 2015)에서 새롭게 도입된 Map 객체는 키(key)와 값(value)이 한 쌍을 이루는 요소들을 저장하는 컬렉션입니다. Map에서는 키와 값으로 객체뿐만 아니라 숫자, 문자열, 불리언 같은 원시 값(primitive value)도 자유롭게 사용할 수 있다는 점이 큰 장점입니다. Map 객체의 주요 특징 다양한 키 타입 지원: 일반 객체(Object)와 달리 함수, 객체, NaN 등 어떤 값이든 키로 사용할 수 있습니다. 삽입 순서 유지: 요소가 추가된 순서를 기억하며, 반복 시에도 해당 순서대로 반
JavaScript의 WeakMap 객체는 키(key)와 값(value)으로 이루어진 요소들을 저장하는 컬렉션입니다. 다만 일반 Map과 달리 키는 반드시 객체여야 하며, 값은 원시 값(문자열, 숫자 등)이나 객체 모두 가능합니다.WeakMap의 가장 큰 특징은 약한 참조(weak reference)를 유지한다는 점입니다. 즉, 키로 사용된 객체가 외부에서 더 이상 참조되지 않으면 해당 객체는 가비지 컬렉션(Garbage Collection)에 의해 자동으로 메모리에서 제거됩니다. 이러한 특성 덕분에 메모리 누수를 방지해야 하는 상
자바스크립트의 Set 객체는 중복 없이 고유한 값만 저장하는 내장 컬렉션입니다. 배열에 중복된 요소가 많거나 고유한 값만 추출해야 할 때, 배열을 Set으로 변환하면 아주 간편하게 처리할 수 있습니다. 기본 변환 방법 배열을 Set으로 변환하는 가장 간단한 방법은 new Set() 생성자에 배열을 인수로 전달하는 것입니다. Set 생성자는 이터러블(iterable) 객체를 받아들이며, 생성 과정에서 중복된 값은 자동으로 제거됩니다. const arr = [2, 3, 4, 2, 3, 4]; const set = new Set(ar
Set 자료형은 ES2015(ES6)에서 처음 도입되었습니다. 배열(Array)과 Set의 가장 큰 차이점은 다음 두 가지로 정리할 수 있습니다. 중복 값 허용 여부: 배열은 동일한 값을 여러 번 저장할 수 있지만, Set은 중복된 값을 허용하지 않습니다. 요소 접근 방식: 배열은 인덱스(index)를 사용해 특정 요소에 바로 접근할 수 있지만, Set은 인덱스 접근이 불가능합니다. Set의 요소는 삽입된 순서대로만 순회(traverse)할 수 있습니다. 아래 예제 코드를 통해 배열과 Set의 차이를 직접 확인해 보겠습니다. 예
웹 개발을 하다 보면 방문자의 공인 IP 주소를 확인해야 하는 경우가 종종 있습니다. 하지만 브라우저에서 실행되는 JavaScript만으로는 사용자의 IP 주소를 직접 알아낼 수 없습니다. 이때 외부 IP 조회 API를 활용하면 간단하게 해결할 수 있습니다.JSONP를 활용한 IP 주소 조회 예제아래 코드는 ipinfo.io에서 제공하는 JSONP API를 사용해 클라이언트의 공인 IP 주소를 가져와 화면에 출력하는 전체 예제입니다.<!DOCTYPE html> <html lang=ko> <head>
JavaScript에서는 함수를 하나의 객체로 취급합니다. 그렇기 때문에 함수를 다른 함수의 매개변수로 전달할 수 있고, 심지어 어떤 함수가 실행 결과로 또 다른 함수를 반환하는 것도 가능합니다.JavaScript의 함수는 일급 객체(first-class function)입니다. 즉, 함수를 변수에 담거나 객체의 속성으로 저장하고, 배열의 요소로도 넣을 수 있다는 의미입니다.고차 화살표 함수란?고차 함수(higher-order function)는 다음 중 하나 이상을 수행하는 함수를 말합니다.함수를 매개변수(인자)로 받는다함수를 반
웹 개발에서 체크박스의 선택 상태를 동적으로 제어하는 것은 매우 흔한 작업입니다. 이 글에서는 자바스크립트를 활용해 버튼 클릭 한 번으로 체크박스를 선택하거나 해제하는 간단한 예제를 소개합니다.예제 코드다음은 자바스크립트를 사용하여 체크박스를 선택/해제하는 전체 코드입니다.<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" con
JavaScript에서 반복문(루프)에 지延迟 시간을 추가하려면 setTimeout() 메서드를 사용하면 됩니다. 핵심은 반복문 안에서 지연 시간에 인덱스 값을 곱해 각 회차마다 서로 다른 대기 시간을 설정하는 것입니다.핵심 원리setTimeout()은 비동기 함수로, 지정된 시간이 경과한 후 콜백 함수를 실행합니다. 반복문 자체는 거의 즉시 모든 회차를 순회하지만, 예를 들어 2000 * i처럼 지연 시간을 설정하면 0초, 2초, 4초… 순으로 실행되어 실질적으로 각 반복 사이에 2초의 간격이 생기는 효과를 얻을 수 있습니다.또한
JavaScript에서 배열(Array)을 Set(집합) 객체로 변환하는 것은 매우 간단합니다. new Set() 생성자에 배열을 인수로 전달하기만 하면 되며, 이 과정에서 중복된 값은 자동으로 제거됩니다.Set이란 무엇인가?Set은 ES6(ECMAScript 2015)에서 도입된 자료구조로, 중복 없는 고유한 값만 저장할 수 있습니다. 따라서 배열에서 중복 요소를 손쉽게 제거하고 싶을 때 Set으로 변환하는 방법이 널리 활용됩니다.예제 코드<!DOCTYPE html> <html lang="en"&
JavaScript에서는 함수가 또 다른 함수를 반환할 수 있습니다. 이러한 패턴은 클로저(Closure)를 활용하는 대표적인 사례로, 내부 함수가 외부 함수의 변수에 계속 접근할 수 있게 되어 상태를 유지하는 데 매우 유용합니다.아래는 JavaScript에서 하나의 함수가 다른 함수를 반환하는 코드 예제입니다.예제 코드<!DOCTYPE html> <html lang=ko> <head> <meta charset=UTF-8 /> <meta name=viewport content=widt
웹 애플리케이션에서 파일을 업로드할 때는 서버 부하와 저장 공간 관리를 위해 파일 크기를 사전에 검증하는 것이 좋습니다. JavaScript의 File 객체가 제공하는 size 속성을 활용하면 클라이언트 측에서 간단하게 파일 크기를 확인할 수 있습니다. 동작 원리 <input type=file> 요소의 files 속성은 사용자가 선택한 파일 목록을 담고 있으며, files[0].size는 파일 크기를 바이트(byte) 단위로 반환합니다. 이 값을 1024로 나누면 KB 단위로 변환할 수 있고, 허용 용량(예: 4096KB