JavaScript 기본 (3) type: of 연산 자

5091 단어
type: of 연산 자
type: of 연산 자 는 계산 되 지 않 은 연산 자의 종 류 를 나타 내 는 문자열 을 되 돌려 줍 니 다.
typeof operand
typeof (operand)

유형
결실
undefined
"undefined"
null
"object"
Boolean
"boolean"
Number
"number"
String
"string"
Symbol
"symbol"
숙주 대상 (Js 환경 제공)
Implementation-dependent
함수 개체
"function"
기타 대상
"object"
// Numbers
typeof 37 === 'number';
typeof 3.14 === 'number';
typeof Math.LN2 === 'number';
typeof Infinity === 'number';
typeof NaN === 'number'; //   NaN "Not-A-Number"   
typeof Number(1) === 'number'; //          !

// Strings
typeof "" === 'string';
typeof "bla" === 'string';
typeof (typeof 1) === 'string'; // typeof         
typeof String("abc") === 'string'; //          !

// Booleans
typeof true === 'boolean';
typeof false === 'boolean';
typeof Boolean(true) === 'boolean'; //          !

// Symbols
typeof Symbol() === 'symbol';
typeof Symbol('foo') === 'symbol';
typeof Symbol.iterator === 'symbol';

// Undefined
typeof undefined === 'undefined';
typeof declaredButUndefinedVariable === 'undefined';
typeof undeclaredVariable === 'undefined'; 

// Objects
typeof {a:1} === 'object';

//   Array.isArray    Object.prototype.toString.call
//     ,    
typeof [1, 2, 4] === 'object';

typeof new Date() === 'object';

//          ,    !
typeof new Boolean(true) === 'object';
typeof new Number(1) === 'object';
typeof new String("abc") === 'object';

//   
typeof function(){} === 'function';
typeof class C{} === 'function'
typeof Math.sin === 'function';
typeof new Function() === 'function';

null
자바 스 크 립 트 의 초기 구현 에서 자바 스 크 립 트 의 값 은 형식 을 나타 내 는 태그 와 실제 데이터 값 으로 표 시 됩 니 다.대상 의 유형 라벨 은 0 입 니 다.null 은 빈 포인터 (대부분의 플랫폼 아래 값 은 0x 00) 를 대표 하기 때문에 null 의 형식 태그 도 0 이 되 었 습 니 다. type of null 은 'object' 를 잘못 되 돌려 주 었 습 니 다.(reference)
new 연산 자 사용
// All constructor functions while instantiated with 'new' keyword will always be typeof 'object'
var str = new String('String');
var num = new Number(100);

typeof str; // It will return 'object'
typeof num; // It will return 'object'

// But there is a exception in case of Function constructor of Javascript

var func = new Function();

typeof func; // It will return 'function'

문법 괄호
// Parentheses will be very much useful to determine the data type for expressions.
var iData = 99;

typeof iData + ' Wisen'; // It will return 'number Wisen'
typeof (iData + ' Wisen'); // It will return 'string'

정규 표현 식
정규 표현 식 글자 의 형식 에 대한 판단 은 일부 브 라 우 저 에서 표준 에 부합 되 지 않 습 니 다.
typeof /s/ === 'function'; // Chrome 1-12 ,     ECMAScript 5.1
typeof /s/ === 'object'; // Firefox 5+ ,    ECMAScript 5.1

데 드 존
블록 급 역할 도 메 인 let const 는 성명 하기 전에 type of 작업 을 하면 Reference Error 를 던 집 니 다.블록 급 역할 영역 은 블록의 머리 부분 에 '일시 적 사구' 에 있 으 며 초기 화 되 었 음 을 알 고 있 으 며 이 기간 에 변수 에 접근 하면 오류 가 발생 할 수 있 습 니 다.
예외
typeof document.all === 'undefined'

IE
IE 6, 7, 8 에 서 는 함수 가 아 닌 대상 이 많 습 니 다. 예 를 들 어:
typeof alert === 'object'

흔 한 문제
1. type: of 의 반환 값 은 모두 몇 개 입 니까?
답: "number", "string", "boolean", "undefined", "object", "function", "symbol" 등 7 개의 반환 값
2. typeof 는 왜 object 와 function 를 구분 합 니까?
답: 함 수 는 ECMAScript 에서 대상 이지 데이터 형식 이 아 닙 니 다. 함수 에는 특수 한 속성 이 포함 되 어 있 기 때문에 type: of 를 사용 하여 구분 할 필요 가 있 습 니 다. 실제 사용 과정 에서 이러한 수요 가 있 습 니 다.
3. typeof 의 부족 한 점 은 무엇 입 니까?
답: type of 연산 자 는 대상, 배열, 정규 를 정확하게 구분 할 수 없습니다. 반환 값 은 "object" 입 니 다. 일부 초기 브 라 우 저 버 전 은 정규 대상 에 게 "function" 을 되 돌려 줍 니 다. IE 67 에 서 는 type of alert / object, 기타 브 라 우 저 type alert / / function 을 되 돌려 줍 니 다.
4. 다음 표현 식 의 값 을 판단 합 니 다
typeof 1/0   //NaN
typeof (1/0)  //number
typeof typeof 1/0 // NaN
typeof typeof (1/0) // string
typeof (typeof 1/0) // number

5. typeof 로 대상 의 잠재 적 함정 이 무엇 인지 판단
답: JavaScript 는 typeof []==='object', typeof null === 'object', typeof function(){}==='function' 에 대해 typeof 를 사용 하여 판단 할 때 이러한 상황 을 고려 해 야 합 니 다. 물론 대체 방법 을 선택 할 수도 있 습 니 다. Object.prototype.toString.call([]) 로 판단 할 수도 있 습 니 다. 반환 값 은 [object Array] 과 유사 합 니 다. 정규 처리 Object.prototype.toString.call([]]).replace(/\[object\s|\]/g,'') 를 더 할 수 있 습 니 다.
참고 자료:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/typeof

좋은 웹페이지 즐겨찾기