1. Introduction
JavaScript는 현대 웹 개발에서 필수적인 프로그래밍 언어입니다. 특히 링크 동작을 제어하거나 정의되지 않은 값을 처리할 때 “void 0”와 “javascript:void(0)” 같은 표현이 자주 사용됩니다.
이러한 표현은 초보자에게 혼란스러울 수 있지만, 올바르게 사용하면 가독성과 기능성을 모두 향상시킬 수 있습니다. 이 글에서는 “void 0”와 “javascript:void(0)”의 의미와 사용 사례를 설명하고, 최신 개발 환경에서의 모범 사례를 소개합니다.
이 글을 읽고 다음을 배울 수 있습니다:
- “void 0”가 무엇이며 어떤 역할을 하는지
- “javascript:void(0)”의 사용 예시와 목적
- 더 안전한 대안을 활용한 현대적인 구현 방법
이제부터 “void 0”의 기본 개념과 실용적인 예제를 살펴보겠습니다.
2. What Is void 0?
The Basic Role of void 0
“void 0”는 다음과 같이 작성됩니다:
console.log(void 0); // undefined
이 코드는 항상 “undefined”를 반환합니다.
Difference from undefined
JavaScript에서 “undefined”는 변수이며, 실수로 재정의될 수 있습니다. 예를 들어:
var undefined = "test";
console.log(undefined); // "test"
“undefined”가 재정의되면 원래 의미를 잃게 됩니다.
이를 방지하기 위해 전통적으로 “void 0”가 “undefined”를 확실히 반환하는 방법으로 사용되었습니다.
Usage Example
함수에서 명시적으로 “undefined”를 반환하는 예시입니다.
function example() {
return void 0;
}
console.log(example()); // undefined
Practical Use Cases of void 0
- 초기화되지 않은 값 확인
var value = void 0; console.log(value === undefined); // true
- 안전한 링크 제어
<a href="javascript:void(0)">Link</a>
이 예시에서는 링크를 클릭해도 다른 페이지로 이동하지 않습니다.

3. Meaning and Usage of javascript:void(0)
What Is javascript:void(0)?
“javascript:void(0)”는 JavaScript의 “void” 연산자를 사용해 “undefined”를 반환합니다.
<a href="javascript:void(0)">A link that does not navigate</a>
이 코드를 클릭해도 페이지 이동이나 다른 동작이 일어나지 않습니다.
Usage Examples
- 버튼 클릭 시 JavaScript 실행
<a href="javascript:void(0)" onclick="alert('Clicked!')">Button</a>
- 폼 검증
<a href="javascript:void(0)" onclick="validateForm()">Submit</a>
여기서는 폼 검증이 완료될 때까지 페이지 전환이 차단됩니다.
4. Issues and Risks of javascript:void(0)
Negative Impact on SEO
검색 엔진은 javascript: 스킴을 사용하는 링크를 제대로 크롤링하지 못할 수 있습니다.
SEO를 고려하는 웹사이트에서는 이 방식을 피하는 것이 좋습니다.
Reduced Accessibility
스크린 리더가 “javascript:void(0)”를 일반 링크로 인식할 수 있어, 보조 기술에 의존하는 사용자에게 동작이 명확하지 않을 수 있습니다.
Problems When JavaScript Is Disabled
JavaScript가 비활성화된 경우, “javascript:void(0)”는 전혀 동작하지 않아 사용자 경험이 크게 저하됩니다.
5. Alternatives to javascript:void(0)
1. Use the <button> Tag
버튼 요소를 사용하면 올바른 HTML 구조를 유지하면서 JavaScript로 완전한 제어가 가능합니다.
<button type="button" onclick="alert('Clicked!')">Click</button>
2. Combine the <a> Tag with event.preventDefault()
<a href="#" onclick="event.preventDefault(); alert('Clicked!')">Click</a>
이 방법은 JavaScript로 페이지 이동을 차단하면서 href="#"를 유지해 SEO와 접근성 호환성을 확보합니다.

6. Summary of javascript:void(0)
Review of Key Points
- “javascript:void(0)”는 기본 링크 동작을 비활성화하고 JavaScript 이벤트만 실행합니다.
- 그러나 SEO와 접근성에 단점이 있어 현대 개발에서는 적합하지 않습니다.
- 더 안전하고 유연한 대안으로
<button>태그 사용이나event.preventDefault()활용이 있습니다.
7. Recommended Best Practices
1. Maintain Semantic HTML Structure
의미 있고 의미론적으로 적절한 HTML 태그(예: <button>, <form>)를 사용하여 적절한 SEO와 접근성을 보장하세요.
2. JavaScript에서 이벤트 제어 관리
이벤트 리스너와 preventDefault()를 사용하여 상호작용을 유연하고 현대적인 방식으로 처리하세요.
3. 레거시 코드에서 마이그레이션
기존 코드가 “javascript:void(0)”을 사용하는 경우, 현대적인 대안으로 점진적으로 교체하는 것을 고려하세요.
8. 결론
전체 요점
- “void 0”은 항상 “undefined”를 반환하며, 전역
undefined값의 의도하지 않은 덮어쓰기를 방지하는 데 도움이 됩니다. - “javascript:void(0)”은 링크 탐색을 비활성화하고 JavaScript 실행을 제어하는 데 사용되지만, SEO와 접근성 문제를 도입합니다.
- 현대 웹 개발에서는 더 안전하고 표준 기반의 동작을 위해 의미론적 HTML 태그와
preventDefault()사용을 권장합니다.
최종 조언
“void 0”과 “javascript:void(0)”은 역사적으로 유용한 기법이었지만, 현대 JavaScript 개발에서 항상 이상적인 선택은 아닙니다. 새 프로젝트의 경우, SEO, 접근성 및 유지보수성을 우선시하는 업데이트된 접근 방식을 채택하는 것이 권장됩니다. 이 개념들에 대한 탄탄한 이해를 쌓고 실제 개발에서 효과적으로 적용하세요.



