>웹 프론트엔드 >JS 튜토리얼 >JavaScript_javascript 팁의 값 유형 변환 소개

JavaScript_javascript 팁의 값 유형 변환 소개

WBOY
WBOY원래의
2016-05-16 16:22:46953검색

JavaScript에서 -, *, /, ==, != 등의 연산을 수행할 때 연산자의 왼쪽과 오른쪽에 있는 값 유형이 예상 유형과 일치하지 않으면 JavaScript는 해당 값을 변환합니다. 연산자의 양쪽을 예상되는 유형으로 다시 작업하십시오. 예상 값 유형이 문자열인 경우 JavaScript는 값을 문자열로 변환하고, 예상 값 유형이 숫자인 경우 JavaScript는 값을 숫자로 변환합니다(예를 들어 숫자 값으로 변환할 수 없는 경우 NaN이 반환됩니다). :

코드 복사 코드는 다음과 같습니다.

console.log(10 "고양이");//10 고양이
console.log(10 * " cats");//NaN, " cats"는 NaN으로 변환됩니다
console.log(10 "2");//102
console.log(10 - "2");//8
console.log(10 / "2");//5
console.log(10 * "2");//20
console.log(10 * " 2");//20
console.log("10" * "2");//20

값 유형 변환 규칙

JavaScript의 값 변환 규칙은 "JavaScript – The Definitive Guide" 책의 표 3-2 JavaScript 유형 변환을 참조하세요. 주목할만한 장소는 다음과 같습니다.

1. undefine을 숫자로 변환한 후의 결과는 NaN입니다.
2. null을 숫자로 변환한 결과는 0입니다.
3. 빈 문자열 ""을 숫자로 변환한 결과는 0입니다.
4. -0을 문자열로 변환한 결과는 "0"입니다.
5. 빈 배열 []을 숫자로 변환한 결과는 0입니다.
6. 숫자 멤버가 하나만 있는 배열(예: [9])을 숫자로 변환하면 결과는 숫자 값(9)입니다.

JavaScript가 문자열을 숫자로 변환할 때 두 가지 흥미로운 규칙이 있습니다.

1. JavaScript는 문자열을 변환하기 전에 문자열의 시작과 끝 부분에 있는 공백 문자를 삭제하므로 "42"와 같은 문자열이 숫자 42로 성공적으로 변환될 수 있습니다.

2. 시작과 끝의 공백 문자를 제거한 후에도 문자열에 여전히 숫자가 아닌 문자가 포함되어 있으면 문자열이 NaN으로 변환됩니다. 예를 들어 "3m"는 NaN으로 변환됩니다.

예:

코드 복사 코드는 다음과 같습니다.

console.log(10 * " 3 ");//30
console.log(10 * "3 m");//NaN, "3 m"이 NaN으로 변환됩니다

값 유형 변환 및 비교

JavaScript에서 등호 연산자(==)를 사용하려면 값 유형 변환이 필요합니다. == 연산자 양쪽의 값 유형이 일치하지 않으면 JS는 판단을 내리기 전에 이를 일관된 유형으로 변환합니다. 유형 변환 후 서로 다른 유형의 두 값이 동일할 수 있지만 이것이 해당 값에 == 연산자를 사용한 결과가 반드시 true라는 의미는 아닙니다. 간단한 예는 정의되지 않음과 거짓입니다. 정의되지 않음을 부울 유형으로 변환한 후 결과는 거짓이 되지만 실제로는 정의되지 않음==false의 결과는 거짓입니다.

명시적 유형 변환

JavaScript의 자동 유형 변환을 사용하면 매우 편리하지만 코드 유지 관리 등의 문제가 쉽게 발생할 수도 있습니다. 프로그램 코드를 더 명확하게 만들고 모호성을 줄이기 위해 JS 프로그램에서는 때때로 명시적인 유형 변환이 사용됩니다.

코드 복사 코드는 다음과 같습니다.

숫자("3")//3
문자열(false)//"false"
부울([])//참

대부분의 경우 명시적 유형 변환의 결과는 JS 자동 유형 변환의 결과와 일치하지만 특별한 경우가 있습니다. null 또는 정의되지 않음이 자동으로 Object로 변환되면 JS는 TypeError 오류를 발생시킵니다. null 또는 정의되지 않음을 Object로 변환하면 JS는 빈 객체를 반환합니다.
코드 복사 코드는 다음과 같습니다.

console.log(Object(undefine));//빈 객체
console.log(Object(null));//빈 객체

동시에 명시적 변환으로 지정된 유형이 JS 자동 변환으로 지정된 유형과 다른 경우 얻는 결과도 달라집니다. 예를 들어 앞서 언급한 undefine==false의 결과는 false입니다. 변환 유형이 명시적으로 부울로 지정되면 결과는 true가 됩니다.
코드 복사 코드는 다음과 같습니다.

console.log(정의되지 않음 == false);//false
console.log(부울(정의되지 않음) == 부울(false));//true

자동 유형 변환 사용

JS에서는 값 유형의 자동 변환을 사용하고 연산자를 사용하여 다음과 같이 명시적 변환과 동일한 효과를 얻을 수 있습니다.

코드 복사 코드는 다음과 같습니다.

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