소개
진술이 프로그래머가 더 자주 사용한다는 진술이어야하고, 종종 판단을 해야하는 경우가 종종 있어야합니다. 명령문이 일반적으로 이중 부호를 사용하여 전후에 두 요소가 일관되는지 여부를 결정합니다. 일관된 경우 반환이 사실이며 다음 진술을 실행합니다. 그렇지 않으면 다른 진술을 실행하십시오. 이 기사에서 언급 된 암시 적 유형 변환은 ==로 인한 변환을 나타냅니다. 간단한 예를 들기 위해, 이중 동일 부호는 총 동일 부호가 아니며, 총 동일한 부호는 "==="3 개의 동일한 부호이며, "1"== 1, 일반적으로 이전 문자열 "1"은 숫자 1으로 변환 된 다음 비교됩니다. 이 예를 통해 암시 적 유형 변환이 무엇인지 이해해야합니다!
암시 적 유형 변환 단계
1. 먼저, 이중 동일 부호 전후에 NAN이 있는지 확인하십시오. NAN이 존재하면 모두 false를 반환합니다.
2. 이중 동일 부호 전후에 부울이 있는지 살펴 보겠습니다. 부울이있는 경우 부울을 숫자로 변환하십시오. (거짓은 0, true는 1)
3. 그런 다음 이중 동일 부호 전후에 문자열이 있는지 확인하십시오. 세 가지 상황이 있습니다.
1. 상대방은 객체이고 객체는 toString () 또는 valueOf ()를 사용하여 변환됩니다.
2. 상대방은 숫자이며 문자열은 숫자로 변환됩니다. (예제는 이전에 제공되었습니다)
3. 상대방은 문자열이며 직접 비교하십시오.
4. 다른 사람들은 거짓을 반환합니다
4. 숫자라면 상대방은 대상입니다. 객체는 비교를 위해 () 또는 toString ()을 취하고 다른 모든 객체는 false를 반환합니다.
5. Null, Undefined는 유형 변환을 수행하지 않지만 동일합니다.
위의 전환 순서는 명심해야합니다. 인터뷰 중에 종종 질문 유형이 발생합니다.
.toString () 메소드 및 .valueof () 메소드의 숫자 변환
일반적으로 객체를 문자열로 변환하려면 toString () 메소드를 호출해야하며 숫자로 변환하려면 valueof () 메소드를 호출해야하지만 실제로 적용될 때는 간단하지 않습니다. 다음 코드 예를 참조하십시오.
var obj = {WebName : "Haorooms 프론트 엔드 블로그", url : "www.vevb.com"} console.log (obj.tostring ()); // [객체 개체]마찬가지로 () 메소드의 valueof ()를 다시 살펴 보겠습니다.
var arr = [1, 2, 3]; console.log (arr.valueof ()); // [1, 2, 3]
위의 코드에서 볼 수 있듯이 () 메소드는 객체를 객체를 반영하는 숫자로 변환하지 않습니다. 대신, 우리는 tostring ()을 사용합니다.
var arr = [1, 2, 3]; console.log (arr.toString ()); // 1,2,3
참고 : 많은 친구들이 문자열로 변환 할 때 먼저 tostring () 메소드를 호출해야한다고 생각합니다. 사실, 이것은 잘못된 이해입니다. 우리는 이런 식으로 이해해야합니다. ToString () 메소드를 호출하는 것은 문자열로 변환 될 수 있지만, 문자열을 변환하는 것이 먼저 toString () 메소드를 호출하는 것임을 의미하지는 않습니다.
다음 코드를 살펴 보겠습니다.
var arr = {}; arr.valueof = function () {return 1; } arr.toString = function () {return 2; } console.log (arr == 1); // truevar arr = {}; arr.valueof = function () {return []; } arr.toString = function () {return 1; } console.log (arr == 1); // true위의 코드에서 전환을 위해 valueof ()를 호출하는 것을 볼 수 있습니다. valueof ()가 숫자 값이 아닌 경우 Tostring은 변환을 요구합니다!
var arr = {}; arr.valueof = function () {return "1"; } arr.toString = function () {return "2"; } console.log (arr == "1"); // true"1"이 문자열 인 경우 (가장 먼저) value의 ()이라고합니다.
var arr = [2]; console.log (arr + "1"); // 21
위의 예에서, toString ()이 호출됩니다. arr.toString () 다음에 2가 이어지기 때문입니다.
전환 과정은 다음과 같습니다. 먼저, ARR은 () 메소드를 먼저 호출하지만,이 숫자 의이 방법은 간단하게 상속되어 다시 작성되지 않습니다 (물론이 재 작성은 우리가 구현하지 않습니다). 리턴 값은 값 유형이 아닌 배열 객체 자체이므로 ToString () 메소드를 호출하여 문자열로 변환하는 목적을 달성합니다.
요약
대부분의 개체는 값 유형으로 암시 적으로 변환하는 것이 값을 () 메소드를 호출하려는 첫 번째 시도입니다. 그러나 날짜 객체는 예외입니다. 이 객체의 valueof () 및 toString () 메소드가 신중하게 다시 작성되었습니다. 기본값은 + 연산자 사용과 같은 ToString () 메소드를 호출하는 것입니다. 다른 산술 작동 환경에 있으면 () 메소드가 대신 호출됩니다.
var date = new date (); console.log (date + "1"); // 2014 년 4 월 17 일 17:54:48 GMT + 0800 (CST) 1Console.log (날짜 + 1); // 1460886888856Console.log (날짜 * 1); // 14608888885557