>웹 프론트엔드 >JS 튜토리얼 >JavaScript가 문자열과 숫자 연결 및 산술에서 예기치 않은 결과를 생성하는 이유는 무엇입니까?

JavaScript가 문자열과 숫자 연결 및 산술에서 예기치 않은 결과를 생성하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-26 01:54:12619검색

Why Does JavaScript Produce Unexpected Results in String and Number Concatenation and Arithmetic?

JavaScript의 특이한 점 풀기: '왓' 토크의 이상한 점 설명

빈 배열 빈 배열: 비어 있는 연결

두 개의 빈 배열을 추가하면 JavaScript는 이를 먼저 기본 배열로 변환합니다. 이 경우 배열의 기본값은 빈 문자열이므로 결과는 두 개의 빈 문자열을 연결한 것입니다. 즉, 빈 문자열입니다.

빈 배열 개체: 개체 삭제

빈 배열을 기본 요소(빈 문자열)로 변환하고 객체를 기본 요소(문자열 표현, "[object Object]")로 변환하면 다음과 같은 결과가 발생합니다. 빈 문자열과 객체 표현을 연결하여 "[객체 객체]"를 생성합니다.

객체 빈 배열: JavaScript의 색다른 산술

동영상과 달리 제공된 JSFiddle, {} []의 결과는 0이 아닌 [Object]입니다. 이러한 불일치는 빈 ​​블록 {}이 다음과 같이 해석되기 때문에 발생합니다. 비어 있는 것으로 평가되는 블록 문입니다. 단항 연산자는 빈 값을 숫자로 변환하여 결과가 0이 됩니다. 그러나 함수 인수 내에서 이를 사용하므로 명령문은 표현식 명령문으로 해석되어야 합니다. 이로 인해 {}가 빈 블록 대신 빈 객체 리터럴로 구문 분석되어 [객체]로 이어집니다.

객체 객체: 일치하지 않는 출력

결과 of {} {}는 "object Object"여야 하지만 JSFiddle은 다른 결과를 표시합니다. 이러한 불일치는 문자열에 두 객체를 추가한 결과가 다를 수 있는 JavaScript의 구현별 동작으로 인해 발생할 수 있습니다.

Array(16).join("wat" - 1): NaN 전파

이 표현식의 입력 문자열은 NaN으로 평가되는 "NaN-1"입니다. JavaScript가 배열의 빈 문자열 요소와 "NaN"을 연결하려고 하면 연결 알고리즘에 따라 결과는 항상 NaN입니다.

"wat" 1 대 "wat" - 1: 문자열 대 문자열 . 숫자 변환

"wat" 1에서 JavaScript는 1을 문자열로 변환하여 "wat1"이 됩니다. 반면에 "wat" - 1에서는 "wat"를 숫자로 변환하려고 시도하며 그 결과 NaN이 생성됩니다. 연결 연산자의 첫 번째 인수로 문자열이 필요하므로 NaN은 다시 문자열로 변환되어 "NaN"이 반복됩니다.

위 내용은 JavaScript가 문자열과 숫자 연결 및 산술에서 예기치 않은 결과를 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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