>  기사  >  웹 프론트엔드  >  JavaScript_javascript 기술의 암시적 유형 변환에 대한 간략한 분석

JavaScript_javascript 기술의 암시적 유형 변환에 대한 간략한 분석

WBOY
WBOY원래의
2016-05-16 17:10:441032검색

함수나 메소드 호출을 통해 특정 유형을 다른 유형으로 명시적으로 변환하는 것을 명시적 변환이라고 하고, 그 반대를 암시적 유형 변환이라고 합니다. "표시 유형 변환" 및 "암시적 유형 변환"이라는 단어는 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; 🎜>alert(typeof a); //-->number
a ''
alert(typeof a) //-->string


2," -" 연산자 "-"는 단항 연산자(음수) 또는 이항 연산자(뺄셈 연산)일 수 있습니다. 예를 들어


코드 복사 코드는 다음과 같습니다.
var a = 11, b = '5';
var c = a - b;
alert(typeof c); //--> number

위의 " "와 반대입니다. 문자열 b는 암시적으로 숫자 5로 변환된 다음 산술 뺄셈이 수행됩니다. 이 기능을 사용하면 문자열을 숫자로 쉽게 변환할 수 있습니다

코드 복사 코드는 다음과 같습니다.
var a = '11';
a - ''
alert(typeof a);// -->number


두 개의 문에서 암시적 유형 변환

1, if

코드 복사 코드는 다음과 같습니다.
var obj = {name:'jack'}
if(obj){
//do more
}

여기서 obj는 암시적으로 부울 유형으로 변환됩니다.

2, while

코드 복사 코드는 다음과 같습니다.
var obj = {name:'jack'}
while(obj){
//더 많은 작업 수행
}

if와 동일

3, for in
객체 리터럴을 정의할 때 식별자에서 문자열로의 암시적 변환이 발생하는 경우 유형 변환이 발생합니다.

코드 복사 코드는 다음과 같습니다.
var person = {'name':' jack', "age":20,school:'PKU'}
for(var a in person){
Alert(a ": " typeof a)


여기서는 이름과 나이에 각각 작은따옴표/큰따옴표를 추가하여 문자열 형식임을 강조하고, 학교에는 작은따옴표/큰따옴표를 추가하지 않습니다. 객체의 속성을 탐색하여 유형을 확인합니다. school도 암시적으로 String 유형으로 변환되는 것으로 나타났습니다.

배열의 인덱스는 실제로 문자열 유형입니다. 놀랍지만 사실입니다. 예를 들어


var ary = [1, 3,5,7 ];
for(var a in ary){
Alert(a ": " typeof a)



3. 경고 중에 존재

코드 복사의 암시적 유형 변환 코드는 다음과 같습니다. String .prototype.fn = function(){return this};
var a = 'hello'
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());//-->object
alert (a.fn()); //-->10

a.fn()은 객체 유형을 반환하지만, Alert(a.fn())이 다음으로 변환될 때 암시적으로 변환됩니다. 숫자.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.