>  기사  >  웹 프론트엔드  >  왜 `${\'h.className = h.className 입니까? \' error\' : \'error\'}` JavaScript에서 예상대로 작동하지 않습니까?

왜 `${\'h.className = h.className 입니까? \' error\' : \'error\'}` JavaScript에서 예상대로 작동하지 않습니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-30 04:34:28637검색

Why does `${'h.className  = h.className ? ' error' : 'error'}` not work as expected in JavaScript?

JavaScript의 삼항 연산자 우선 순위 문제 해결

JavaScript의 삼항 연산자는 조건부 할당을 위한 강력한 도구이지만 우선 순위를 이해하는 것은 까다로울 수 있습니다. 이 기사는 삼항 연산자가 =.

문제 이해

다음 코드 조각을 고려하세요.

h.className += h.className ? ' error' : 'error'

얼핏 보면 이 코드는 삼항 조건에 따라 h.className의 현재 값을 'error' 또는 'error'와 연결하는 것처럼 보입니다. 그러나 이렇게 해석하면 오류가 발생할 수 있습니다.

올바른 해석

문제는 연산자의 우선순위에 있습니다. JavaScript에서는 연산자가 삼항 연산자보다 우선순위가 높습니다. 즉, 위의 표현식은 다음과 같이 평가됩니다.

h.className = h.className + (h.className ? ' error' : 'error')

해결 방법

삼항 연산자가 올바르게 적용되도록 하려면 코드를 다음과 같이 작성해야 합니다.

h.className = h.className + (h.className ? ' error' : 'error')

이렇게 하면 h.className과 연결하기 전에 삼항 연산자가 평가됩니다.

추가 고려 사항

다음 사항에 유의하는 것이 중요합니다. h.className = ' error' 도 유효하지만 업데이트된 코드만큼 정확하지는 않습니다. = 연산자는 h.className에만 적용되는 반면, 업데이트된 코드는 삼항 조건 결과를 h.className과 명시적으로 연결합니다.

결론

연산자 우선 순위를 이해하는 것이 중요합니다. 올바른 JavaScript 코드 작성. 삼항 연산자와 = 연산자에 대한 우선순위 규칙을 명확히 하여 이 문서에서는 JavaScript에서 조건부 할당을 사용할 때 직면하는 일반적인 문제에 대한 솔루션을 제공합니다.

위 내용은 왜 `${\'h.className = h.className 입니까? \' error\' : \'error\'}` JavaScript에서 예상대로 작동하지 않습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.