JavaScript의 이중 등호로 인한 암시적 유형 변환에 대한 자세한 해석(그래픽 튜토리얼)

亚连
풀어 주다: 2018-05-21 11:19:10
원래의
1192명이 탐색했습니다.

JavaScript의 == 판단으로 인한 변환은 인터프리터의 일련의 실행 단계를 시작합니다. 다음으로 JavaScript의 이중 등호로 인한 암시적 유형 변환에 대해 자세히 설명합니다.

소개

if 문은 판단이 필요한 경우 더 자주 사용되는 문이어야 합니다. if 문은 일반적으로 앞과 뒤의 두 요소가 일치하는지 여부를 판단하기 위해 이중 등호를 사용합니다. 일치하면 반환 값은 true입니다. 그런 다음 다음 문을 실행하고, 그렇지 않으면 다른 문을 실행합니다. 이 글에서 언급된 암시적 유형 변환은 ==에 의해 발생하는 변환을 의미합니다. 간단한 예를 들자면, 이중 등호는 합동 기호가 아니며, 합동 기호는 "==="이고 문 "1" == 1이면 일반적으로 이전 문자열 "1"이 다음으로 변환됩니다. 1번을 선택하고 비교해 보세요. 이 예를 통해 암시적 유형 변환이 무엇인지 이해해야 합니다!

암시적 유형 변환 단계

1. 먼저 이중 등호 앞뒤에 NaN이 있는지 확인하세요. NaN이 있으면 항상 false를 반환합니다.

2. 이중 등호 앞이나 뒤에 불리언이 있는지 확인하세요. 불리언이 있으면 해당 불리언을 숫자로 변환하세요. (false는 0, true는 1)

3. 그런 다음 이중 등호 앞뒤에 문자열이 있는지 확인하십시오. 3가지 상황이 있습니다.

1. 상대방이 객체를 사용하여 변환됩니다. toString() 또는 valueOf();

2, 상대방이 숫자인 경우 문자열을 숫자로 변환합니다. (이미 예제가 제공됨)
3 상대방이 문자열인 경우
4. false
4. 숫자인 경우 상대방은 객체이고 객체는 비교를 위해 valueOf() 또는 toString()을 사용하고 다른 모든 것은 false를 반환합니다

5. Null 및 undefed는 유형 변환을 수행하지 않습니다. areequal

위의 변환 순서를 명심하세요. 인터뷰 중에 유형 문제가 자주 발생합니다.

.toString() 메서드 및 .valueOf() 메서드 숫자 변환

일반적으로 객체를 문자열로 변환하려면 toString() 메서드를 호출해야 하고, 숫자로 변환하려면 다음이 필요하다고 생각합니다. valueOf() 메소드를 호출하지만 실제 애플리케이션에서는 그렇게 간단하지 않습니다. 다음 코드 예를 살펴보세요.

var obj = {
 webName: "haorooms前端博客",
 url:"www.jb51.net"
}
console.log(obj.toString()); //[object Object]
로그인 후 복사

마찬가지로 valueOf() 메소드를 살펴보겠습니다.

var arr = [1, 2, 3];
console.log(arr.valueOf());//[1, 2, 3]
로그인 후 복사

위 코드에서 볼 수 있듯이 valueOf() 메소드는 객체를 이 객체의 수를 반영할 수 있는 것으로 변환하지 않습니다. 대신 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);//true

var 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"이 문자열인 경우 가장 먼저 호출되는 것은 valueOf()입니다.

var arr = [2];
console.log(arr + "1");//21
로그인 후 복사

위의 예에서는 arr.toString() 뒤에 2가 오기 때문에 toString()이 호출됩니다.

변환 프로세스는 다음과 같습니다. 먼저 arr은 valueOf() 메서드를 호출하지만 이 숫자 메서드는 단순히 상속되었으며 다시 작성되지 않았습니다(물론 이 다시 작성은 우리에서 구현되지 않았습니다). 배열 객체 자체는 값 유형이 아니므로 대신 toString() 메서드를 호출하여 문자열로 변환하는 목적을 달성합니다.

요약

암시적으로 값 유형으로 변환되는 대부분의 객체는 먼저 valueOf() 메서드를 호출하려고 시도합니다. 그러나 Date 객체는 예외입니다. 이 객체의 valueOf() 및 toString() 메서드는 다른 산술 연산에 있는 경우 toString() 메서드를 호출하는 것입니다. 환경에서는 대신 valueOf() 메서드가 호출됩니다.

var date = new Date();
console.log(date + "1"); //Sun Apr 17 2014 17:54:48 GMT+0800 (CST)1
console.log(date + 1);//Sun Apr 17 2014 17:54:48 GMT+0800 (CST)1
console.log(date - 1);//1460886888556
console.log(date * 1);//1460886888557
로그인 후 복사

위 내용은 모두를 위해 제가 정리한 내용입니다. 앞으로 모든 사람에게 도움이 되기를 바랍니다.

관련 기사:

JavaScript의 인수 객체 심층 분석(그래픽 튜토리얼)

JavaScript_object에 대한 기본 소개(필독)(그래픽 튜토리얼)

javascriptClient의 자세한 해석- 사이드 이벤트 중심(그림 및 텍스트 튜토리얼)

위 내용은 JavaScript의 이중 등호로 인한 암시적 유형 변환에 대한 자세한 해석(그래픽 튜토리얼)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!