typeof operator 返回了表示对象类型的字符串

下表列出了typeof可能的返回值。

Type Result
Undefined "undefined"
Null "object" 
Boolean "boolean"
Number "number"
String "string"
Symbol (ECMAScript 2015的新特性) "symbol"
Host object (js环境提供) 依赖于具体的浏览器环境
Function object (implements [[Call]] in ECMA-262 terms) "function"
Any other object "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'; // but never use this form!

// Strings

typeof "" === 'string';

typeof "bla" === 'string';

typeof (typeof 1) === 'string'; // typeof永远返回string

typeof String("abc") === 'string'; // but never use this form!

// Booleans

typeof true === 'boolean';

typeof false === 'boolean';

typeof Boolean(true) === 'boolean'; // but never use this form!

// Symbols

typeof Symbol() === 'symbol'

typeof Symbol('foo') === 'symbol'

typeof Symbol.iterator === 'symbol'

// Undefined

typeof undefined === 'undefined';

typeof 声明了但是没有定义的变量=== 'undefined';

typeof没有声明的变量 === 'undefined';

// Objects

typeof {a:1} === 'object';
//使用Array.isArray或者Object.prototypr.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';

// Functions

typeof function(){} === 'function';

typeof class C {} === 'function';

typeof Math.sin === 'function';

null

//从js实现之初就存在
typeof null === 'object';

在最初JS的实现时,js值包括了一个值和一个类型标签(a type tag)。对象的类型标签是0。null是空指针,在大多数平台指向0x00。所以,null的类型标签也是0.因此,type null返回object。

Regular expressions

可调用的正则表达式(Callable regular expressions)在一些浏览器里不统一。

typeof /s/ === 'function'; // Chrome 1-12 和ECMAScript 5.1标准不一致

typeof /s/ === 'object'; // Firefox 5+ 符合ECMAScript 5.1标准

 

ie特性

在IE6-8中许多许多宿主对象typeof之后返回的是object而不是function 。例如:

typeof alert === 'object'

typeof详解的更多相关文章

  1. C语言typeof详解 offsetof

    http://blog.chinaunix.net/uid-28458801-id-4200573.html 前言:    typeof关键字是C语言中的一个新扩展,这个特性在linux内核中应用非常 ...

  2. C语言typeof详解

    前言:     typeof关键字是C语言中的一个新扩展,这个特性在linux内核中应用非常广泛. 一,说明     typeof的参数可以是两种形式:表达式或类型. 1,表达式的的例子:       ...

  3. JavaScript中typeof详解

    [范围]typeof返回值范围: typeof返回值对应 类型 结果 String "string" Number "number" Boolean " ...

  4. JS 中 判断数据类型 typeof详解

    typeof 可用来获取检测变量的数据类型 语法 typeof operand typeof(operand) 参数 operand   一个表示对象或原始值的表达式,其类型将被返回. 描述 下表总结 ...

  5. 原生JS:delete、in、typeof、instanceof、void详解

    delete.in.typeof.instanceof.void详解 本文参考MDN做的详细整理,方便大家参考[MDN](https://developer.mozilla.org/zh-CN/doc ...

  6. JavaScript中typeof和instanceof深入详解

    这次主要说说javascript的类型判断函数typeof和判断构造函数原型instanceof的用法和注意的地方. typeof 先来说说typeof吧.首先需要注意的是,typeof方法返回一个字 ...

  7. Net is as typeof 运行运算符详解 net 自定义泛型那点事

    Net is as typeof 运行运算符详解   概述 在了解运行运算符的前提我们需要了解什么是RTTI ,在任何一门面向对象的语言中,都有RTTI这个概念(即 运行时). RTTI(Run-Ti ...

  8. C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解

    前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.之前分享过一篇 C#进阶系列——WebApi接口传参不再困惑:传参详解  ...

  9. Xamarin.Android通知详解

    一.发送通知的机制 在日常的app应用中经常需要使用通知,因为服务.广播后台活动如果有事件需要通知用户,则需要通过通知栏显示,而在Xamarin.Android下的通知需要获取Notification ...

随机推荐

  1. Jenkins使用Pipeline插件实现多个Job之间的串并联(教程收集)(待实践)

    在原始不使用插件时,在Jenkins我们要实现多个Job之间的连续集成时,我们一般的做法就是在每个Job上关联另一个Job,但是,这样做有个弊端,只能是连续的,如果要实现串或并联这样的,估计比较难:但 ...

  2. UPLINK口

    为什么我买的交换机没有UPLINK口? UPLINK端口的作用是为了解决网络设备互连时的网线(交叉线和直通线)的使用问题.现在新出的交换机有的是没有UPLINK口的,没有UPLINK口的交换机的每个端 ...

  3. ios高效开发--blocks相关

    1.替换delegate       如果我们有2个viewController,a和b,当我们从a界面push到b后,在b上面触发了一些事件,这些时间又会影响到a界面上的内容.            ...

  4. Golang协程与通道整理

    协程goroutine        不由OS调度,而是用户层自行释放CPU,从而在执行体之间切换.Go在底层进行协助实现      涉及系统调用的地方由Go标准库协助释放CPU      总之,不通 ...

  5. sublime的tab和spaces空格切换的坑

    python是严格要求对齐或者叫缩进的: 使用sublime对python进行编程时,可以使用tab或者空格,但是不能混用.特别是从外面把代码拷贝进sublime的时候,更要注意是否一致. 简单介绍一 ...

  6. Python基础语法02-运算符

    Python 运算符 算术运算符 比较(关系)运算符 赋值运算符 逻辑运算符 位运算符 成员运算符 身份运算符 运算符优先级 Python运算符优先级 以下表格列出了从最高到最低优先级的所有运算符: ...

  7. iOS经常使用设计模式——单例模式

    第一部分: 创建一个单例对象 单例的应用场景: 单例模式用于当一个类仅仅能有一个实例的时候. 通常情况下这个"单例"代表的是某一个物理设备比方打印机,或是某种不能够有多个实例同一时 ...

  8. webpack 项目实战

    步骤一: npm init 步骤二: npm install -D clean-webpack-plugin css-loader extract-text-webpack-plugin html-w ...

  9. wdcp新开站点或绑定域名打不开或无法访问的问题

    一 用IP可以打开,但用域名打开网站显示到默认页面1  站点列表里是否有相应的网站信息 2  检查有没站点配置文件后台 >系统管理 >文件管理器 >虚拟主机站点文件(nginx,ap ...

  10. redirect_uri 參数错误的解决的方法

    我通过java代码去获得用户的openid,一直报redirect_uri. 我页面代码的链接为: https://open.weixin.qq.com/connect/oauth2/authoriz ...