자 바스 크 립 트 의 특수 데이터 형식 분석

자 바스 크 립 트 에는 string,number,boolean,undefined,null,object 등 6 가지 데이터 형식 이 있 습 니 다.
1.JS 의 특수 유형:NaN
NaN 즉 Not a Number,하나의 숫자 가 아 닌 NaN 은 도대체 무엇 일 까?그리고 JS 에 있어 정수 와 부동 소수점 은 모두 number 유형 이 라 고 부 릅 니 다.그 밖 에 number 유형 은 아주 특별한 값 이 있 습 니 다.즉,NaN 은 number 유형 에 속 하 는 지 여 부 를 나타 내 는 상태 입 니 다.정확 한 값 이 아 닙 니 다(따라서 NaN 은 자신 과 같 지 않 습 니 다).
그렇다면 NaN 값 은 보통 어떤 상황 에서 나타 날 까?
일반적으로 두 가지 상황 이 있다.
(1)한 표현 식 에 마이너스(-),곱셈(*)또는 나눗셈(/)등 연산 자가 있 을 경우 JS 엔진 은 계산 하기 전에 연산 자 양쪽 의 변 수 를 number 형식 으로 바 꾸 려 고 합 니 다(number(x)를 사용 하여 전환 에 실패 하면 표현 식 은 NaN 으로 돌아 갑 니 다.플러스(+)연산 자 는 양쪽 변 수 를 number 형식 으로 바 꾸 지 않 습 니 다.이 는 JS 표현 식 의 실행 순 서 는 연산 자의 우선 순위 에 따라 왼쪽 에서 오른쪽으로 순서대로 진행 되 기 때 문 입 니 다.플러스(+)양쪽 변 수 는 number 형식 일 때 만 숫자 가산 을 합 니 다.만약 에 변수 가 문자열 이 라면 양쪽 을 문자열 로 합 니 다.예:5+4+"6"="96"
(2)parseInt,parseFloat 또는 Number 를 직접 사용 하여 비 숫자 값 을 숫자 로 바 꿀 때 표현 식 은 NaN 으로 되 돌려 줍 니 다.

"abc" - 3  // NaN
parseInt( "abc" ) // NaN
parseFloat( "abc" ) //NaN
Number( "abc" )  //NaN
숫자+문자 의 값 에 대해 그 전환 결 과 는 다 를 수 있 습 니 다.

Number( "123abc" ); //NaN
parseInt( "123abc" ); //123
parseInt( "123abc45" ); //123
parseFloat( "123.45abc" ); //123.45
이것 은 Number 가 일부 값 이 아 닌 전체 값 을 바 꾸 었 기 때 문 입 니 다.parseInt 와 parseFloat 는 첫 번 째 잘못된 문자 이전의 문자열 만 바 꾸 었 습 니 다.
따라서 하나의 문자열 이 Number,parseInt,parseFloat 에 의 해 성공 적 으로 변환 되 지 않 을 때 NaN 으로 돌아 가 이 문자열 이 숫자 형식 으로 인식 되 지 않 는 다 는 것 을 나타 낸다.이것 은 이상 상태 이 며 정확 한 값 이 아니다.
그래서 NaN!=NaN,정확 한 값 이 아 닌 이상 상태 이기 때 문 입 니 다.
또한,NaN 과 관련 된 또 하나의 함수,즉 isNaN()은 하나의 문자열 이 Number()에 의 해 성공 적 으로 전환 되 는 지,즉 전체 문자열 을 강제로 전환 하 는 지 확인 하 는 역할 을 합 니 다.

isNaN( "123" )  //false    
isNaN( "abc" )  //true     
isNaN( "123abc" )  //true      ,       
isNaN( "123.45abc" ) //true      ,       
2.JS 에는 또 다른 두 가지 특수 유형 이 있 습 니 다.undeinfed 와 null
undefined 는 JavaScript 6 가지 데이터 형식 중 하나 입 니 다.이 유형 은 하나의 값,즉 undefined 입 니 다.undefined 는'정의 되 지 않 음'이라는 뜻 입 니 다.즉,var 를 사용 하여 변 수 를 설명 하 였 으 나 할당 되 지 않 았 을 때 이 변수의 값 은 undefined 입 니 다.그 발생 원인 은 두 가지 가 있 습 니 다.
(1)방문 대상 이 존재 하지 않 는 속성 이나 방법
(2)변 수 를 설 명 했 지만 값 을 부여 하지 않 았 습 니 다.

var v1,obj = {};
console.log(v1); //undefined
console.log(obj. get ); //undefined
typeof v1; // "undefined"
typeof v2; // "undefined"
typeof obj. get ; // "undefine"
typeof obj ; // "object"
NaN 과 달리 undefined 는 변수의 한 상 태 를 대표 하지만 이 상태 값 은 유일한 것 입 니 다.즉,변수 가 설명 되 었 으 나 할당 되 지 않 았 을 때 그 상 태 는 undefined 입 니 다.따라서 다음 표현 식 은 성립 됩 니 다.

var b;
b == undefined; //true
undefined 를 이해 한 후에 null 을 이해 하 는 것 이 훨씬 쉬 워 집 니 다.null 형식 도 하나의 값 만 있 습 니 다.null 은 하나의 변수 에 효과 적 인 데 이 터 를 포함 하지 않 았 음 을 나타 냅 니 다.null 은 빈 값,빈 대상 이라는 뜻 입 니 다.더 정확히 말 하면 null 로 부 여 된 변 수 는 유효한 수치,문자열,불,배열 또는 대상 등 을 저장 하지 않 았 습 니 다.변 수 를 null 로 부 여 받 아 변수의 내용 을 비 울 수 있 습 니 다.null 이 생 긴 이 유 는 하나 입 니 다.즉,하나의 변수 에 대한 명시 적 할당 은 null 입 니 다.

var p = null ;
console.log(p); //null
typeof p ; // "object"
typeof null ; // "object"
NaN 과 비교 할 때 null 도 유일한 상태 값 을 자 르 는 것 을 확인 합 니 다.변수 가 null 로 할당 되 었 을 때 null 과 같 기 때문에 다음 표현 식 도 성립 됩 니 다.

var obj = null ;
obj == null ; //true
그리고:

var  v1 = null;
var v2;
console.log(v1 + 1 ); // 1
console.log(v2 + 1 ); //NaN
var i = i +1;
var j = i+ 1;
console.log(i); // NaN
console.log(j ); //NaN
console.log(i == j ); //false
총결산
위 에서 말 한 것 은 소 편 이 여러분 에 게 소개 한 자 바스 크 립 트 의 특수 한 데이터 형식 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기