JavaScript import에서 중괄호({ })란 무엇인가?ES6(ES2015) 모듈 시스템에서 named export(이름 있는 내보내기)로 지정된 함수나 변수를 가져올 때는 반드시 중괄호 { }를 사용해야 합니다. 반면 default export(기본 내보내기)는 중괄호 없이 가져올 수 있습니다.또한 중괄호 안에서 as 키워드를 사용하면 가져오는 모듈의 이름을 원하는 대로 변경할 수 있습니다. 아래 예제를 통해 실제 동작 방식을 확인해 보겠습니다.HTML 코드 예제<!DOCTYPE html> <html lan
클로저(Closure)란 무엇인가?자바스크립트에서 클로저(Closure)는 외부 함수의 실행이 종료되고 값을 반환한 이후에도, 내부 함수가 외부 함수의 스코프에 있는 변수에 계속 접근할 수 있도록 해주는 강력한 개념입니다.쉽게 말해, 내부 함수는 자신이 생성될 당시의 외부 함수 환경을 기억하며, 언제든지 외부 함수의 변수를 참조할 수 있습니다. 이러한 특성 덕분에 클로저는 데이터 은닉, 상태 유지, 콜백 함수 작성 등 다양한 상황에서 폭넓게 활용됩니다.클로저 예제 코드다음은 자바스크립트에서 클로저를 활용해 두 숫자를 더하는 간단한
자바스크립트에는 클래스 기반 언어와 달리 private 키워드가 없기 때문에, 외부에서 직접 접근할 수 없는 변수를 만들려면 별도의 기법이 필요합니다. 이럴 때 가장 널리 사용되는 방법이 바로 클로저(Closure)입니다.클로저란 무엇인가?클로저는 함수가 자신이 생성된 환경(렉시컬 스코프)을 기억하고, 그 환경에 있는 변수에 계속 접근할 수 있게 해주는 자바스크립트의 핵심 개념입니다. 함수 내부에 선언된 지역 변수는 함수 외부에서 직접 접근할 수 없으므로, 이 특성을 활용하면 외부로부터 보호되는 프라이빗 속성을 흉내 낼 수 있습니다
JavaScript로 버튼 클릭 여부 확인하기 JavaScript에서는 addEventListener() 메서드를 사용하여 버튼이 클릭되었는지 쉽게 감지할 수 있습니다. 버튼 요소에 click 이벤트 리스너를 등록하면, 사용자가 버튼을 클릭할 때마다 지정한 함수가 실행됩니다. 아래 예제에서는 버튼이 클릭될 때마다 클릭 횟수를 세어 화면에 실시간으로 표시합니다. 예제 코드 <!DOCTYPE html> <html lang="en"> <head> <meta charset="
웹 개발을 하다 보면 클릭된 자식 요소를 기준으로 그 부모 요소의 정보를 알아내야 하는 경우가 자주 있습니다. JavaScript에서는 parentNode 속성을 사용하면 특정 요소의 상위(부모) 노드에 간단하게 접근할 수 있습니다.parentNode 속성이란?parentNode는 DOM 트리에서 해당 노드 바로 위에 있는 부모 노드를 반환하는 속성입니다. 예를 들어 이벤트가 발생한 요소가 event.target이라면, event.target.parentNode를 통해 그 요소를 감싸고 있는 부모 요소에 바로 접근할 수 있습니다.아
JavaScript의 WITH 문(with statement)은 특정 코드 블록 내에서 사용할 기본 객체(default object)를 지정하기 위해 사용됩니다. WITH 문을 활용하면 길고 반복적인 객체 참조를 생략할 수 있어 코드를 훨씬 간결하게 작성할 수 있습니다.WITH 문이 실행되면 지정된 객체가 스코프 체인(scope chain)의 맨 앞에 추가됩니다. 따라서 블록 내부에서는 객체 이름 없이 해당 객체의 속성에 곧바로 접근할 수 있습니다.기본 문법with (객체) { // 객체 이름 없이 속성에 직접 접근 가능 }예제
웹 개발을 하다 보면 특정 부모 요소 아래에 있는 모든 자식 요소에 접근해서 스타일을 변경하거나 이벤트를 처리해야 하는 경우가 자주 발생합니다. JavaScript에서는 children 속성을 사용하면 부모 요소의 자식 요소들을 손쉽게 가져올 수 있습니다.children 속성이란?element.children은 해당 요소의 모든 자식 요소 노드(Element)만을 담고 있는 HTMLCollection을 반환합니다. 텍스트 노드나 주석은 포함되지 않으며, 오직 HTML 태그 요소만 선택됩니다.HTMLCollection은 배열과 유사하
JavaScript 개발을 하다 보면 특정 변수나 객체가 아직 로드되지 않았는지 확인해야 하는 경우가 자주 발생합니다. 이때 가장 기본적인 방법은 변수의 값이 undefined인지 또는 null인지 직접 비교하는 것이며, 항상 문자열을 반환하는 typeof 연산자를 활용하면 더욱 안전하게 검사할 수 있습니다. 방법 1. null 및 undefined 직접 비교하기 변수에 값이 할당되기 전에는 자동으로 undefined가 들어가므로, 이 값을 검사하면 로드 여부를 판단할 수 있습니다. 아래 예제는 버튼을 클릭할 때마다 obj 객체의
익명 함수(Anonymous Function)는 이름이 없는 함수로, 변수에 할당하거나 다른 함수의 인수로 전달할 수 있습니다. 익명 함수에 인수를 전달하는 방법은 일반적인 함수와 동일합니다. 함수를 호출할 때 괄호 안에 원하는 값을 쉼표로 구분하여 넣어주면 됩니다.JavaScript에서 익명 함수에 인수 전달하기다음은 JavaScript에서 익명 함수에 인수를 전달하는 방법을 보여주는 예제 코드입니다. 버튼을 클릭하면 익명 함수가 호출되고, 두 개의 숫자가 인수로 전달되어 그 합이 화면에 표시됩니다.예제<!DOCTYPE ht
window 객체의 open() 메서드는 JavaScript를 사용하여 새 브라우저 창을 여는 가장 좋은 방법입니다. 이 메서드는 지정한 URL을 새 창이나 새 탭으로 열어주며, 창의 크기·위치 등 다양한 옵션도 함께 설정할 수 있습니다.기본 문법window.open(URL, name, specs, replace);URL: 열고자 하는 페이지의 주소입니다. 생략하면 빈 창(about:blank)이 열립니다.name: 새 창의 이름 또는 대상(_blank, _self 등)을 지정합니다.specs: width, height, scrol
자바스크립트(JavaScript)의 eval() 함수는 인수로 전달받은 문자열을 평가하여 실제 자바스크립트 코드로 실행하는 역할을 합니다. 문자열 형태의 표현식이나 명령문을 그대로 코드처럼 동작시킬 수 있다는 점에서 강력하지만, 동시에 보안상 매우 위험한 함수로 분류됩니다.그 이유는 외부에서 입력받은 값을 검증 없이 eval()에 전달할 경우, 공격자가 악성 코드를 문자열에 담아 삽입할 수 있기 때문입니다. 이러한 취약점은 XSS(교차 사이트 스크립팅) 공격으로 직결될 수 있으므로, eval()의 사용은 가급적 피하고 대체 방법을
웹 페이지에서 오디오를 재생할 때 현재 재생 위치, 즉 타임스탬프를 분 단위와 초 단위로 확인하고 싶은 경우가 있습니다. HTML5에서 제공하는 <audio> 요소의 currentTime 속성을 활용하면 이를 손쉽게 구현할 수 있습니다.핵심 개념오디오 플레이어의 현재 재생 시간은 audio.currentTime 속성으로 초 단위 숫자 값으로 반환됩니다. 이 값을 활용하여 다음과 같이 계산할 수 있습니다.분(Minutes): Math.floor(audio.currentTime / 60) — 전체 초를 60으로 나눈 몫초(S
람다(Lambda) 함수는 단 하나의 표현식으로 구성된 작은 익명 함수로, 하나 이상의 매개변수를 받을 수 있습니다. 람다의 핵심 특징은 함수 자체를 값처럼 취급하여 다른 함수의 인자로 전달할 수 있다는 점입니다. JavaScript에서는 함수가 일급 객체(first-class object)로 취급되기 때문에, 함수를 변수에 할당하거나 다른 함수에 전달·반환하는 것이 자유롭습니다. 이러한 특성 덕분에 화살표 함수(arrow function)를 활용하면 람다를 아주 간결하게 구현할 수 있습니다. 예제 코드 <!DOCTYPE h
스페인어처럼 악센트(발음 기호)가 포함된 문자열은 일반적인 sort() 메서드만으로는 언어 규칙에 맞는 올바른 순서로 정렬되지 않습니다. 이런 경우 localeCompare() 메서드를 사용하면 로케일(언어·지역 설정)의 정렬 규칙에 따라 자연스럽게 문자열을 비교하고 정렬할 수 있습니다.localeCompare()란?localeCompare()는 두 문자열을 비교하여 현재 로케일의 사전 순서 규칙에 따라 다음과 같은 값을 반환합니다.비교 문자열이 기준 문자열보다 앞에 오면 음수같으면 0비교 문자열이 뒤에 오면 양수이 값을 배열의 s
JavaScript로 여러 이미지 합치기웹 개발을 하다 보면 두 개 이상의 이미지를 겹치거나 합쳐서 하나의 이미지로 만들어야 하는 경우가 있습니다. JavaScript에서는 Canvas API를 활용하면 별도의 라이브러리나 서버 작업 없이 브라우저에서 바로 이미지를 합성할 수 있습니다.핵심 원리는 간단합니다. 먼저 <canvas> 요소에 2D 드로잉 컨텍스트를 가져온 뒤, drawImage() 메서드로 첫 번째 이미지를 그리고, globalAlpha 속성으로 투명도를 조절하며 두 번째 이미지를 같은 위치에 겹쳐 그리는 방
JavaScript는 웹 페이지의 DOM(문서 객체 모델)을 실시간으로 조작할 수 있는 강력한 기능을 제공합니다. 아래 예제는 document.createElement(), createTextNode(), appendChild() 메서드를 활용하여 버튼을 클릭했을 때 새로운 요소를 동적으로 생성하고 화면에 추가하는 과정을 보여줍니다. 예제 코드 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /&
HTML 페이지에서 이미 선택된 텍스트의 선택 상태를 해제(취소)해야 하는 경우가 있습니다. 이럴 때 JavaScript의 window.getSelection() 메서드와 removeAllRanges() 메서드를 함께 사용하면 간단하게 처리할 수 있습니다.window.getSelection()은 현재 문서에서 사용자가 선택한 텍스트 범위 정보를 담고 있는 Selection 객체를 반환합니다. 여기에 removeAllRanges()를 호출하면 모든 선택 영역(range)이 제거되어 페이지 전체의 텍스트 선택이 해제됩니다.예제 코드&l
웹 개발을 하다 보면 사용자 동작에 따라 특정 요소 내부의 텍스트를 프로그래밍 방식으로 선택하거나, 반대로 선택 상태를 해제해야 하는 경우가 종종 있습니다. JavaScript에서는 window.getSelection() 객체가 제공하는 메서드를 활용하면 이러한 작업을 아주 간단하게 구현할 수 있습니다. 핵심 메서드 살펴보기 selectAllChildren(element) — 지정한 요소의 모든 자식 노드(텍스트 포함)를 한 번에 선택 범위에 포함시킵니다. removeAllRanges() — 현재 문서에 적용된 모든 선택 범위(s
웹 페이지에서 사용자가 마우스로 드래그하여 선택한 텍스트를 자바스크립트로 가져와야 하는 경우가 종종 있습니다. 이때 window.getSelection() 메서드를 사용하면 현재 선택된 텍스트 정보에 손쉽게 접근할 수 있으며, toString() 메서드를 함께 호출하면 순수한 문자열 형태로 변환할 수 있습니다.예제 코드다음은 JavaScript를 사용하여 사용자가 선택한 텍스트 내용을 가져오고, 버튼 클릭 시 화면에 출력하는 전체 코드입니다.<!DOCTYPE html> <html lang=en> <head
원 위의 좌표를 구하는 핵심은 삼각함수입니다. 반지름과 중심 좌표가 주어졌을 때, Math.cos와 Math.sin을 사용하면 원주 위의 각 점의 X, Y 좌표를 쉽게 계산할 수 있습니다.각도는 2π(360도)를 원하는 단계 수(steps)로 나눈 비율로 계산하며, 이렇게 구한 좌표들을 각각 배열에 순차적으로 저장합니다.예제다음은 JavaScript에서 원의 좌표를 계산하여 배열에 저장하는 전체 코드입니다.<!DOCTYPE html> <html lang=en> <head> <meta charse