함수나 메소드 호출을 통해 특정 유형을 다른 유형으로 명시적으로 변환하는 것을 명시적 변환이라고 하고, 그 반대를 암시적 유형 변환이라고 합니다. "표시 유형 변환" 및 "암시적 유형 변환"이라는 단어는 Google 및 Wikipedia에서 찾을 수 없습니다. 그것을 그렇게 부르자.
1. 작업 중 암시적 유형 변환
1. "+" 연산자
다음과 같이 코드 코드를 복사합니다.
var a = 11, b = '22';
var c = a + b;
여기서 엔진은 먼저 a를 문자열 "11"로 변환한 다음 이를 b와 연결하여 "1122"가 됩니다. 어떤 사람들은 b를 숫자 22로 바꾸고 산술 덧셈을 수행하면 c는 33이 되지 않을까 궁금해할 수도 있습니다. 연산자 "+"의 양쪽 중 하나가 숫자 유형이고 다른 하나가 문자열 유형인 경우 js 엔진은 산술 덧셈 대신 문자열 연결을 수행하도록 규정합니다. 연산자 "+" 기능을 이용하면 Number를 String으로 쉽게 변환할 수 있습니다. 좋다
다음과 같이 코드 코드를 복사합니다.
var a = 11;
경고(a 유형); //-->숫자
a = a + '';
경고(a 유형); //-->문자열
2. "-" 연산자
"-"는 단항 연산자(음수 연산) 또는 이항 연산자(뺄셈 연산)일 수 있습니다. 좋다
다음과 같이 코드 코드를 복사합니다.
var a = 11, b = '5';
var c = a - b;
경고(c 유형); //--> 숫자
위의 "+"와는 달리 문자열 b는 암묵적으로 숫자 5로 변환된 후 산술 뺄셈이 수행됩니다. 이 기능을 사용하면 문자열을 숫자로 쉽게 변환할 수 있습니다.
다음과 같이 코드 코드를 복사합니다.
var a = '11';
a = a - '';
경고(a 유형);// -->번호
2. 명령문의 암시적 유형 변환
1, 만약
다음과 같이 코드 코드를 복사합니다.
var obj = {이름:'잭'}
if(obj){
//더 많은 일을 해라
}
여기서 obj는 암시적으로 부울 유형으로 변환됩니다.
2. 동안
다음과 같이 코드 코드를 복사합니다.
var obj = {이름:'잭'}
동안(obj){
//더 많은 일을 해라
}
마치
3. for in 중 유형 변환
객체 리터럴이 정의되면 식별자에서 문자열로의 암시적 변환이 발생합니다.
다음과 같이 코드 코드를 복사합니다.
var person = {'이름':'잭',"나이":20,학교:'PKU'};
for(var a 직접){
경고(a + ": " + 유형의 a);
}
여기서는 이름과 나이에 각각 작은따옴표/큰따옴표를 추가하여 문자열 형식임을 강조하며, 학교에는 작은따옴표/큰따옴표를 추가하지 않습니다. 객체의 속성을 탐색하여 유형을 확인합니다. school도 암시적으로 String 유형으로 변환되는 것으로 나타났습니다.
배열의 인덱스는 실제로 문자열 유형입니다. 놀랍지만 사실입니다. 좋다
다음과 같이 코드 코드를 복사합니다.
var ary = [1,3,5,7];
for(var a in ary){
경고(a + ": " + 유형의 a);
}
3. 경고 시 암시적 유형 변환
다음과 같이 코드 코드를 복사합니다.
String.prototype.fn = function(){return this};
var a = '안녕하세요';
Alert(typeof a.fn()); //-->객체
Alert(a.fn()); //-->안녕하세요
이것을 반환하는 fn 메소드가 String 프로토타입에 추가되어 있습니다. 이는 객체이기 때문에 typeof a.fn()은 당연히 객체를 반환합니다.
핵심은 마지막 경고(a.fn())입니다. a.fn()이 반환하는 것은 분명히 객체이지만 표시를 위해 암시적으로 "hello" 문자열로 변환됩니다.
숫자 유형에서도 같은 일이 발생합니다.
다음과 같이 코드 코드를 복사합니다.
Number.prototype.fn = function(){return this};
var a = 10;
Alert(typeof a.fn());//-->객체
경고(a.fn()); //-->10
a.fn()은 객체 유형을 반환하지만, Alert(a.fn())가 사용되면 암시적으로 숫자로 변환됩니다.