+, -, *, /, ==,! = 등을 수행 할 때 JavaScript에서 연산자 양쪽의 값 유형이 예상 유형과 일치하지 않으면 JavaScript는 작업을 수행하기 전에 작업자의 양쪽 값을 예상 유형으로 변환합니다. 예상 값 유형이 String이면 JavaScript는 값을 String으로 변환합니다. 예상 값 유형이 숫자 인 경우 javaScript는 값을 숫자로 변환합니다 (숫자 값으로 변환 할 수없는 경우 NAN을 반환합니다). 예를 들어:
코드 사본은 다음과 같습니다.
Console.log (10 + "고양이"); // 10 고양이
Console.log (10 * "고양이"); // 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의 값 변환 규칙은 표 3-2를 참조하십시오. JavaScript 유형 변환 책 "JavaScript The Definitive Guide". 더 주목할만한 곳 중 일부는 다음과 같습니다.
1. 결과는 정의되지 않은 숫자로 전환 한 후 NAN입니다.
2. NULL을 숫자로 변환 한 후 결과는 0입니다.
3. 빈 문자열을 숫자로 변환 한 후 결과는 0입니다.
4. 결과는 -0을 문자열로 변환 한 후 "0"입니다.
5. 빈 배열 []를 숫자로 변환 한 후 결과는 0입니다.
6. 숫자 멤버가 하나만있는 배열 (예 : [9])가 숫자로 변환되고 결과는 숫자 값 (9)입니다.
JavaScript가 문자열을 숫자로 변환하면 두 가지 흥미로운 규칙이 있습니다.
1. JavaScript는 문자열의 시작과 끝에서 WhiteSpace 문자를 삭제하기 전에 변환되므로 "42"와 같은 문자열을 42로 성공적으로 변환 할 수 있습니다.
2. 시작과 끝에서 공백 문자를 삭제 한 후 문자열에 여전히 비수막 문자가 포함되어 있으면 문자열이 NAN으로 변환됩니다. 예를 들어 : "3m"은 NAN으로 변환됩니다.
예:
코드 사본은 다음과 같습니다.
Console.log (10 * "3"); // 30
console.log (10 * "3 m"); // nan, "3 m"은 Nan으로 변환됩니다.
값 유형 변환 및 비교
JavaScript에서 동등한 연산자 (==)의 사용에는 값 유형 변환이 포함됩니다. == 연산자의 양쪽의 값 유형이 일치하지 않으면 JS는 판단하기 전에 일관된 유형으로 변환합니다. 유형 변환 후 두 가지 유형의 값이 동일 할 수 있음을 조심하지만, == 연산자를 사용한 결과가 사실이어야한다는 의미는 아닙니다. 간단한 예제는 정의되지 않은 및 거짓입니다. 정의되지 않은 변환 후 부울 유형으로 변환 한 후 정의되지 않은 결과는 정확히 거짓이지만 실제로는 정의되지 않은 == 거짓의 결과는 false입니다.
명시 적 유형 변환
JavaScript를 사용한 자동 유형 변환은 매우 편리하지만 코드 유지 관리와 같은 문제를 쉽게 발생시킬 수 있습니다. 프로그램 코드를 더 명확하고 모호하게 만들기 위해, 명백한 유형 변환은 때때로 JS 프로그램에서 사용됩니다.
코드 사본은 다음과 같습니다.
번호 ( "3") // 3
문자열 (false) // "false"
부울 ([]) // true
대부분의 경우 명시 적 유형 변환의 결과는 JS 자동 유형 변환의 결과와 일치합니다. 그러나 특별한 경우가 있습니다. NULL이거나 정의되지 않은 경우 자동으로 Object로 변환되면 JS는 TypeError 오류를 던집니다. 그러나 NULL이거나 정의되지 않은 경우 객체로 명시 적으로 변환되면 JS는 빈 객체를 반환합니다.
코드 사본은 다음과 같습니다.
Console.log (Object (undefined)); // 비어있는 객체
console.log (Object (null)); // 비어있는 객체
동시에, 명시 적 변환에 의해 지정된 유형이 JS의 자동 변환에 의해 지정된 유형과 다른 경우, 얻은 결과도 다릅니다. 예를 들어, 앞에서 언급 한 undefined == false의 결과는 false입니다. 변환 유형이 부울으로 명시 적으로 지정된 경우 결과는 참입니다.
코드 사본은 다음과 같습니다.
console.log (undefined == false); // false
console.log (부울 (undefined) == boolean (false)); // true
자동 유형 변환 사용
JS에서 값 유형의 자동 변환은 다음과 같은 연산자를 통한 명시 적 변환과 동일한 효과를 달성하는 데 사용될 수 있습니다.
코드 사본은 다음과 같습니다.
console.log (false + ""); // "false"
console.log (+false); // 0
Console.log (!! 3); // true