String.bold() 대신 CSS와 DOM API를 사용해야 하는 이유와 최신 코드 예시

2025-10-26

String.bold() 메서드는 해당 문자열을 HTML의 <b> 태그로 감싼 새로운 문자열을 반환합니다. 이 메서드는 원래 웹 페이지에서 텍스트를 굵게 표시하기 위해 설계되었습니다.

// 예시 코드 (이렇게 사용했었습니다)
const myString = "안녕하세요, 세상!";
const boldString = myString.bold(); 

console.log(boldString); 
// 출력 결과: "<b>안녕하세요, 세상!</b>"

String.bold()와 같은 HTML 래퍼 메서드들은 이제 더 이상 사용이 권장되지 않습니다(Deprecated). 주요 문제점은 다음과 같습니다.

HTML 및 CSS와의 분리 원칙 위반 현대 웹 개발에서는 내용(HTML), 스타일(CSS), 동작(JavaScript)을 분리하는 것이 가장 좋습니다. bold() 메서드는 JavaScript 코드 안에서 직접 HTML 마크업(<b> 태그)을 생성하여 이 원칙을 어기게 됩니다.

접근성(Accessibility) 문제 텍스트를 시각적으로 굵게 만드는 것은 스타일의 영역입니다. 텍스트의 의미가 "중요하다"는 것을 강조할 때는 <strong> 태그를 사용해야 하지만, bold()는 무조건 <b> 태그를 생성하여 시각적인 스타일만 전달합니다.

유지보수의 어려움
스타일 변경 시, JavaScript 코드까지 수정해야 하는 번거로움이 발생합니다.


<b> 태그 자체는 HTML5에서 여전히 유효하지만, 시각적으로 굵게 표시할 때만 사용해야 합니다. 텍스트의 중요성을 나타낼 때는 <strong> 태그를 사용하고, 스타일링은 CSS로 하는 것이 가장 좋은 방법입니다.

String.bold() 대신 텍스트를 굵게 표시하는 현대적인 방법은 크게 CSS를 이용하는 방법과 DOM API를 이용하는 방법이 있습니다.

JavaScript에서 HTML 요소를 생성한 후, CSS 클래스를 적용하여 스타일을 입히는 방식입니다. 이 방식이 가장 유연하고 유지보수가 쉽습니다.

<div id="target-area"></div>
/* CSS */
.text-bold {
    font-weight: bold; /* 700과 동일한 효과를 줍니다 */
}

.text-important {
    font-weight: 700;
    color: darkred; /* 의미적으로 중요함을 시각적으로도 강조 */
}
const targetArea = document.getElementById('target-area');
const contentString = "반드시 알아야 할 중요한 내용입니다.";

// <span> 요소를 생성합니다.
const spanElement = document.createElement('span');

// 텍스트를 추가합니다.
spanElement.textContent = contentString;

// CSS 클래스를 추가하여 굵게 만듭니다.
// 의미적으로 중요한 경우
spanElement.classList.add('text-important'); 
// 단순히 시각적으로 굵게 만들 경우
// spanElement.classList.add('text-bold'); 

// HTML 문서에 추가합니다.
targetArea.appendChild(spanElement);

간단한 작업의 경우, 템플릿 리터럴( )을 사용하여 <strong> 또는 <b> 태그를 직접 감싸는 문자열을 생성한 후 innerHTML을 통해 삽입할 수 있습니다. 하지만 HTML을 직접 생성하는 것은 XSS(Cross-Site Scripting)와 같은 보안 문제의 위험이 있으므로, 사용자 입력을 다룰 때는 주의해야 합니다.

const targetArea = document.getElementById('target-area');
const contentString = "이것은 강조된 텍스트입니다.";

// 템플릿 리터럴을 사용하여 <strong> 태그로 감싼 HTML 문자열을 만듭니다.
const htmlToInsert = `<strong>${contentString}</strong>`;

// DOM에 삽입합니다.
targetArea.innerHTML = htmlToInsert; 

텍스트의 의미적 중요성을 강조하기 위해 <strong> 태그를 사용하는 것이 좋습니다. DOM API를 이용하면 안전하게 요소 구조를 만들 수 있습니다.

const targetArea = document.getElementById('target-area');
const contentString = "매우 중요한 업데이트 공지!";

// <strong> 요소를 생성합니다.
const strongElement = document.createElement('strong');

// 텍스트를 추가합니다.
strongElement.textContent = contentString;

// HTML 문서에 추가합니다.
targetArea.appendChild(strongElement);

javascript



JavaScript Temporal: ZonedDateTime.daysInYear 완벽 가이드 및 윤년 처리

Temporal. ZonedDateTime. daysInYear는 Temporal. ZonedDateTime 객체가 나타내는 연도의 총 일수를 반환하는 간단한 메서드입니다.daysInYear 자체는 비교적 단순한 메서드라 큰 오류는 없지만


getTimezoneOffset() 대신 Intl.DateTimeFormat을 써야 하는 이유 (친절한 JS 시간대 설명)

Date. prototype. getTimezoneOffset() 메서드는 UTC(협정 세계시)와 지역 시간(Local Time)의 차이를 분(minutes) 단위로 반환합니다.반환 값의 특징지역 시간대가 UTC보다 늦을 경우 (예 GMT+9, 한국), 음수가 반환됩니다


동적 RegExp 패턴 생성 가이드: 변수 사용과 안전한 문자열 처리 방법

JavaScript에서 정규 표현식 객체를 만드는 방법은 크게 두 가지가 있습니다.슬래시(/) 사이에 패턴을 작성합니다. 정규식이 고정되어 있을 때 가장 권장되는 방식입니다.new RegExp()를 사용하여 문자열로 패턴을 작성합니다



Math.SQRT2 상수 사용법과 Math.sqrt(2) 대체 코드 비교 분석

Math. SQRT2는 2(2의 양의 제곱근)의 값을 나타내는 JavaScript의 상수예요. 그 값은 대략 4142135623730951입니다. 이 값은 수학 연산, 특히 기하학적 계산 등에서 유용하게 사용될 수 있어요


new RegExp() 사용 시 리터럴 문자열 이스케이프, 백슬래시 4개 쓰는 이유

정규 표현식은 문자열 속에서 특정 패턴을 찾거나 대체할 때 사용하는 강력한 도구입니다. 이 중에서 리터럴 문자란, 말 그대로 정규 표현식 패턴에 있는 그대로의 문자를 의미해요. 예를 들어 /abc/라는 정규식에서 a, b, c는 모두 리터럴 문자이고


개발자를 위한 Object.prototype 핵심 정리: for...in, hasOwnProperty 대체 방법

Object. prototype은 JavaScript의 거의 모든 객체가 상속받는 최상위 객체입니다.JavaScript에서 객체 리터럴({})이나 new Object()로 생성된 모든 객체는 이 Object. prototype을 프로토타입 체인(Prototype Chain)의 일부로 가집니다


JavaScript Temporal: daysInWeek 속성, 7이 아닌 달력은?

JavaScript의 Temporal API 중 Temporal. PlainDate. prototype. daysInWeek 속성에 대해 알아보겠습니다. 이 속성은 특정 날짜가 속한 주(week)의 요일 수를 반환하는데요


JS 배열 정의 시 흔한 실수! 쉼표(,) 및 대괄호(]) 오류 방지 팁

요청하신 JavaScript의 SyntaxError: missing ] after element list (목록 뒤에 닫는 대괄호 ]가 누락됨) 오류에 대해 친절하고 이해하기 쉽게 한국어로 설명해 드릴게요.이 오류는 주로 배열(Array)을 초기화하거나 정의할 때 발생합니다


Temporal Instant toJSON, UTC로만 나오는 이유? 한국 시간으로 바꾸는 법!

Temporal API는 아직 비교적 새로운 기능이라 정보가 많지 않을 수도 있지만, 시간 데이터를 다룰 때 정말 유용하답니다! 특히 $\text{Temporal. Instant}$는 특정 순간을 UTC 기준으로 밀리초 단위까지 정확하게 나타내기 때문에


concat() 대신 써야 할 것은? 자바스크립트 문자열 연결 최적화 가이드

concat() 메서드는 문자열을 이어 붙여 새로운 문자열을 반환하는 데 사용되지만, 실제로 실무에서는 다른 더 편리하고 일반적인 방법들이 주로 사용된답니다.String. prototype. concat() 메서드는 호출한 문자열에 하나 이상의 문자열 인수를 이어 붙여 새로운 문자열을 반환합니다