Baseline Widely available
typeof
è¿ç®ç¬¦è¿åä¸ä¸ªå符串ï¼è¡¨ç¤ºæä½æ°çç±»åã
console.log(typeof 42);
// Expected output: "number"
console.log(typeof "blubber");
// Expected output: "string"
console.log(typeof true);
// Expected output: "boolean"
console.log(typeof undeclaredVariable);
// Expected output: "undefined"
è¯æ³ åæ°
operand
表示è¦è¿åç±»åç对象æåºæ¬ç±»åç表达å¼ã
ä¸è¡¨æ»ç»äº typeof
å¯è½çè¿åå¼ãæå
³ç±»åååºæ¬ç±»åçæ´å¤ä¿¡æ¯ï¼å¯æ¥ç JavaScript æ°æ®ç»æ 页é¢ã
è¿ä¸ªå¼å表æ¯è¯¦å°½çãæ²¡æç¬¦åè§èç弿æ¾è¢«æ¥åè¿äº§çï¼æåå²ä¸äº§çè¿ï¼é¤ååºçå¼ä¹å¤çå¼ãå¨è§èå é¤ typeof
为ä¸å¯è°ç¨çéæ å夿¥å¯¹è±¡è¿åå®ç°å®ä¹çå符串çè¡ä¸ºä¹åï¼æ§ç Internet Explorer æ¯å·²ç¥çå¯ä¸ä¸ä¸ªå®ç°é¢å¤è¿åå¼çæµè§å¨ã
// æ°å¼
typeof 37 === "number";
typeof 3.14 === "number";
typeof 42 === "number";
typeof Math.LN2 === "number";
typeof Infinity === "number";
typeof NaN === "number"; // å°½ç®¡å®æ¯ "Not-A-Number" (éæ°å¼) ç缩å
typeof Number(1) === "number"; // Number ä¼å°è¯æåæ°è§£æææ°å¼
typeof Number("shoe") === "number"; // å
æ¬ä¸è½å°ç±»å强å¶è½¬æ¢ä¸ºæ°åçå¼
typeof 42n === "bigint";
// å符串
typeof "" === "string";
typeof "bla" === "string";
typeof `template literal` === "string";
typeof "1" === "string"; // 注æå
容为æ°åçåç¬¦ä¸²ä»æ¯å符串
typeof typeof 1 === "string"; // typeof æ»æ¯è¿åä¸ä¸ªå符串
typeof String(1) === "string"; // String å°ä»»æå¼è½¬æ¢ä¸ºåç¬¦ä¸²ï¼æ¯ toString æ´å®å
¨
// å¸å°å¼
typeof true === "boolean";
typeof false === "boolean";
typeof Boolean(1) === "boolean"; // Boolean() ä¼åºäºåæ°æ¯çå¼è¿æ¯èå¼è¿è¡è½¬æ¢
typeof !!1 === "boolean"; // 两次è°ç¨ !ï¼é»è¾éï¼è¿ç®ç¬¦ç¸å½äº Boolean()
// Symbols
typeof Symbol() === "symbol";
typeof Symbol("foo") === "symbol";
typeof Symbol.iterator === "symbol";
// Undefined
typeof undefined === "undefined";
typeof declaredButUndefinedVariable === "undefined";
typeof undeclaredVariable === "undefined";
// 对象
typeof { a: 1 } === "object";
// ä½¿ç¨ Array.isArray æè
Object.prototype.toString.call
// åºåæ°ç»åæ®é对象
typeof [1, 2, 4] === "object";
typeof new Date() === "object";
typeof /regex/ === "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 null
// JavaScript è¯ç以æ¥ä¾¿å¦æ¤
typeof null === "object";
å¨ JavaScript æåçå®ç°ä¸ï¼JavaScript ä¸ç弿¯ç±ä¸ä¸ªè¡¨ç¤ºç±»åçæ ç¾åå®é
æ°æ®å¼è¡¨ç¤ºçã对象çç±»åæ ç¾æ¯ 0ãç±äº null
ä»£è¡¨çæ¯ç©ºæéï¼å¤§å¤æ°å¹³å°ä¸å¼ä¸º 0x00ï¼ï¼å æ¤ï¼null çç±»åæ ç¾æ¯ 0ï¼typeof null
ä¹å æ¤è¿å "object"
ãï¼åèæ¥æºï¼
æ¾æä¸ä¸ª ECMAScript çä¿®å¤ææ¡ï¼éè¿éæ©æ§å å
¥çæ¹å¼ï¼ï¼ä½è¢«æç»äºãè¯¥ææ¡ä¼å¯¼è´ typeof null === 'null'
ã
ææä½¿ç¨ new
è°ç¨çæé 彿°é½å°è¿åéåºæ¬ç±»åï¼"object"
æ "function"
ï¼ã大夿°è¿å对象ï¼ä½å¼å¾æ³¨æçä¾å¤æ¯ Function
ï¼å®è¿åä¸ä¸ªå½æ°ã
const str = new String("String");
const num = new Number(100);
typeof str; // "object"
typeof num; // "object"
const func = new Function();
typeof func; // "function"
è¯æ³ä¸éè¦åæ¬å·
typeof
æä½ç¬¦çä¼å
级é«äºå æ³ï¼+
ï¼çäºè¿å¶æä½ç¬¦ãå æ¤ï¼éè¦ç¨æ¬å·æ¥è®¡ç®å æ³ç»æçç±»åã
// æ¬å·ææ å°å³å®è¡¨è¾¾å¼çç±»åã
const someData = 99;
typeof someData + " Wisen"; // "number Wisen"
typeof (someData + " Wisen"); // "string"
䏿ªå£°æåæªåå§ååéç交äº
typeof
éå¸¸æ»æ¯ä¿è¯ä¸ºå®æä¾ç任使使°è¿åä¸ä¸ªå符串ãå³ä½¿ä½¿ç¨æªå£°æçæ è¯ç¬¦ï¼typeof
ä¹ä¼è¿å "undefined"
ï¼è䏿¯æåºé误ã
typeof undeclaredVariable; // "undefined"
ä½å¨å å
¥äºå级ä½ç¨åç let å const ä¹åï¼å¨å
¶è¢«å£°æä¹å对åä¸ç let
å const
åéä½¿ç¨ typeof
伿åºä¸ä¸ª ReferenceErrorãåä½ç¨ååéå¨åç头é¨å¤äºâæåæ»åºâï¼ç´è³å
¶è¢«åå§åï¼å¨è¿æé´ï¼è®¿é®åéå°ä¼å¼åé误ã
typeof newLetVariable; // ReferenceError
typeof newConstVariable; // ReferenceError
typeof newClass; // ReferenceError
let newLetVariable;
const newConstVariable = "hello";
class newClass {}
document.all çå¼å¸¸è¡ä¸º
å½åæææµè§å¨é½å
¬å¼äºä¸ä¸ªç±»å为 undefined
çéæ å宿主对象 Document.All
ã
typeof document.all === "undefined";
è½ç¶ document.all
乿¯åå¼ï¼ä¸ undefined
éä¸¥æ ¼ç¸çï¼ä½å®ä¸æ¯ undefined
ãå¨ Web æ åä¸ï¼document.all
å
·æ "undefined"
ç±»åçæ
åµè¢«å½ç±»ä¸ºâæ
æè¿åâåå§ ECMAScript Web å
¼å®¹æ§æ åã
typeof
æ¯é常æç¨çï¼ä½å®ä¸åéè¦ç飿 ·ä¸è½ãä¾å¦ï¼typeof []
æ¯ "object"
ï¼ä»¥å typeof new Date()
ãtypeof /abc/
çã
ä¸ºäºæ´æç¡®å°æ£æ¥ç±»åï¼è¿éæä»¬æä¾äºä¸ä¸ªèªå®ä¹ç type(value)
彿°ï¼å®ä¸»è¦æ¨¡ä»¿ typeof
çè¡ä¸ºï¼ä½å¯¹äºéåºæ¬ç±»åï¼å³å¯¹è±¡å彿°ï¼ï¼å®å¨å¯è½çæ
åµä¸è¿åæ´è¯¦ç»çç±»ååã
function type(value) {
if (value === null) {
return "null";
}
const baseType = typeof value;
// åºæ¬ç±»å
if (!["object", "function"].includes(baseType)) {
return baseType;
}
// Symbol.toStringTag é常æå®å¯¹è±¡ç±»çâdisplay nameâ
// å®å¨ Object.prototype.toString() ä¸ä½¿ç¨ã
const tag = value[Symbol.toStringTag];
if (typeof tag === "string") {
return tag;
}
// 妿宿¯ä¸ä¸ªå½æ°ï¼å
¶æºä»£ç 以 "class" å
³é®åå¼å¤´
if (
baseType === "function" &&
Function.prototype.toString.call(value).startsWith("class")
) {
return "class";
}
// æé 彿°çåç§°ï¼ä¾å¦ `Array`ã`GeneratorFunction`ã`Number`ã`String`ã`Boolean` æ `MyCustomClass`
const className = value.constructor.name;
if (typeof className === "string" && className !== "") {
return className;
}
// å¨è¿ä¸ç¹ä¸ï¼æ²¡æåéçæ¹æ³æ¥è·åå¼çç±»åï¼å æ¤æä»¬ä½¿ç¨åºæ¬å®ç°ã
return baseType;
}
è¦æ£æ¥å¯è½ä¸åå¨çåéï¼å¦åä¼æåº ReferenceError
ï¼è¯·ä½¿ç¨ typeof nonExistentVar === 'undefined'
ï¼å 为èªå®ä¹ä»£ç æ æ³æ¨¡ä»¿è¿ç§è¡ä¸ºã
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4