typeof详解
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详解的更多相关文章
- C语言typeof详解 offsetof
http://blog.chinaunix.net/uid-28458801-id-4200573.html 前言: typeof关键字是C语言中的一个新扩展,这个特性在linux内核中应用非常 ...
- C语言typeof详解
前言: typeof关键字是C语言中的一个新扩展,这个特性在linux内核中应用非常广泛. 一,说明 typeof的参数可以是两种形式:表达式或类型. 1,表达式的的例子: ...
- JavaScript中typeof详解
[范围]typeof返回值范围: typeof返回值对应 类型 结果 String "string" Number "number" Boolean " ...
- JS 中 判断数据类型 typeof详解
typeof 可用来获取检测变量的数据类型 语法 typeof operand typeof(operand) 参数 operand 一个表示对象或原始值的表达式,其类型将被返回. 描述 下表总结 ...
- 原生JS:delete、in、typeof、instanceof、void详解
delete.in.typeof.instanceof.void详解 本文参考MDN做的详细整理,方便大家参考[MDN](https://developer.mozilla.org/zh-CN/doc ...
- JavaScript中typeof和instanceof深入详解
这次主要说说javascript的类型判断函数typeof和判断构造函数原型instanceof的用法和注意的地方. typeof 先来说说typeof吧.首先需要注意的是,typeof方法返回一个字 ...
- Net is as typeof 运行运算符详解 net 自定义泛型那点事
Net is as typeof 运行运算符详解 概述 在了解运行运算符的前提我们需要了解什么是RTTI ,在任何一门面向对象的语言中,都有RTTI这个概念(即 运行时). RTTI(Run-Ti ...
- C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解
前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.之前分享过一篇 C#进阶系列——WebApi接口传参不再困惑:传参详解 ...
- Xamarin.Android通知详解
一.发送通知的机制 在日常的app应用中经常需要使用通知,因为服务.广播后台活动如果有事件需要通知用户,则需要通过通知栏显示,而在Xamarin.Android下的通知需要获取Notification ...
随机推荐
- HDU 2236 无题II(二分图匹配+二分)
HDU 2236 无题II 题目链接 思路:行列仅仅能一个,想到二分图,然后二分区间长度,枚举下限.就能求出哪些边是能用的,然后建图跑二分图,假设最大匹配等于n就是符合的 代码: #include & ...
- jQeury入门:遍历
一旦用jQuery创建一个初始的包装集.你就能深度遍历刚刚选择的包装集. 遍历能够被分为三个基础元件:父级.子级,同级.jQuery为全部这些元件提供丰富易用的方法.注意每个方法都能轻易的传递给字符串 ...
- nginx list directory
使用 http autoindex 模块列出 目录, 例如 需要将 /var/www 下的 resourcepacks 目录以 http 的方式 暴露 这样设置 nginx ...
- odoo生产物流
odoo生产从raw materials location 自动消耗物料,产成品进入到finish productslocation. 而odoo自动产生的MO[manufacture Order], ...
- Mysql多线程性能测试工具sysbench 安装、使用和测试
From:http://www.cnblogs.com/zhoujinyi/archive/2013/04/19/3029134.html 摘要: sysbench是一个开源的.模块化的.跨 ...
- python--面向对象组合
面向对象的命名空间 类中的方法 类中的静态属性 对象的属性类的组合应用 面向对象的命名空间 class A: country='中国' a=A() a.name='alex' print(a. ...
- 不为客户连接创建子进程的并发回射服务器( poll实现 )
前言 在上文中,我使用select函数实现了不为客户连接创建子进程的并发回射服务器( 点此进入 ).但其中有个细节确实有点麻烦,那就是还得设置一个client数组用来标记select监听描述符集中被设 ...
- iOS9新特性之泛型
iOS9新特性之泛型 作用:限制类型 好处:1.提高开发规范,减少程序员之间的交流 2.通过集合取出来的对象,直接当作泛型对象使用,可以直接使用点语法(id类型不能使用点语法) 使用场景: 1.在集 ...
- Colly provides a clean interface to write any kind of crawler/scraper/spider
Scraping Framework for Golang http://go-colly.org/ https://github.com/gocolly/colly package main imp ...
- mybatis入门(七)
mybatis入门--添加一个用户 //添加用户 @Test public void insertUserTest() throws IOException { // 通过工厂得到SqlSession ...