JavaScript 기본 (3) 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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.