typeof操作符返回一个字符串,表示未经计算的操作数的类型。

语法

typeof运算符后跟操作数:

typeof operand
or
typeof (operand)

参数

operand 是一个表达式,表示对象或原始值,其类型将被返回。

括号是可选的。

描述

下表总结了typeof可能的返回值。有关类型和原始值的更多信息,可查看 JavaScript数据结构 页面。

类型 结果
Undefined "undefined"
Null "object"(见下文)
Boolean "boolean"
Number "number"
String "string"
Symbol (ECMAScript 6 新增) "symbol"
宿主对象(由JS环境提供) Implementation-dependent
函数对象([[Call]] 在ECMA-262条款中实现了) "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

typeof null === 'object'; // 从一开始出现JavaScript就是这样的

在 JavaScript 最初的实现中,JavaScript 中的值是由一个表示类型的标签和实际数据值表示的。对象的类型标签是 0。由于 null 代表的是空指针(大多数平台下值为 0x00),因此,null的类型标签也成为了 0,typeof null就错误的返回了"object"。(reference)

ECMAScript提出了一个修复(通过opt-in),但被拒绝。这将导致typeof null === 'object'。

使用 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

暂存死区

在 ECMAScript 2015 之前,typeof总是保证为任何操作数返回一个字符串。但是,除了非提升,块作用域的let和const之外,在声明之前对块中的letconst变量使用typeof会抛出一个ReferenceError。这与未声明的变量形成对比,typeof会返回“undefined”。块作用域变量在块的头部处于“暂时死区”,直到被初始化,在这期间,如果变量被访问将会引发错误。

typeof undeclaredVariable === 'undefined';
typeof newLetVariable; let newLetVariable; // ReferenceError typeof newConstVariable; const newConstVariable = 'hello'; // ReferenceError

例外

所有当前的浏览器都暴露了一个类型为 undefined 的非标准宿主对象 document.all

typeof document.all === 'undefined';

尽管规范允许为非标准的外来对象定制类型标签,但它要求这些类型标签与预定义标签不同。document.all的类型标记为“undefined”的情况必须被列为违反规则的特殊情况

转载于:https://www.cnblogs.com/asdyzh/p/9800538.html

typeof操作符返回一个字符串,表示未经计算的操作数的类型。相关推荐

  1. 传入一个中文字符串,返回一个字符串中的中文拼音

    /**      * @param 传入一个中文字符串      * @return 返回一个字符串中的中文拼音      */     private String getNameNum(Strin ...

  2. JAVA传入一个字符串,返回一个字符串中的大写字母

    /**      *       * @param 传入一个字符串      * @return 返回一个字符串中的大写字母      */     private static String str ...

  3. C语言返回指针的函数,指针函数,让一个函数返回一个字符串

    C语言函数返回指针的函数(指针函数) 什么是返回指针的函数 一个函数可以返回一个整形值 字符型值 实型值 1.如果一个函数它的返回值是一个地址(是一个指针的话),这个函数是一个返回值是指针即指针函数. ...

  4. 解决springmvc在单纯返回一个字符串对象时所出现的乱码情况(极速版)

    使用springmvc框架开发了这么长时间,之前都是直接返回jsp页面,乱码情况都是通过配置和手动编解码来解决,但是今天突然返回一段单纯的字符串时,发现中文乱码情况解决不了了,下面就给各位分享一下如何 ...

  5. mvc后台字符串转换html,c# – 从MVC Controller返回一个字符串到jQuery

    在ASP.NET MVC控制器中,操作不返回字符串.他们返回ActionResults. 因此,首先要修复你的行动(请阅读下面的内容,了解为什么我将修正用斜体,这是因为这只是第一阶段): public ...

  6. SQL中返回一个字符串在另一个中存在的次数

    ALTER FUNCTION [reg].[f_GetSameStringCntNoSort] ( @str1 VARCHAR(100),--源字符串,取该串中的@strLen长度的字符是否在目的字符 ...

  7. Java黑皮书课后题第10章:**10.25(新的字符串split方法)String类中的split方法会返回一个字符串数组,该数组是由分隔符分隔开的子串构成的

    Java黑皮书课后题第10章:**10.25(新的字符串split方法) 题目 代码 运行实例 题目 代码 public class Test25 {public static String[] sp ...

  8. 用js编写一个函数:rev(str),功能是实现字符串倒置:rev(”床前明月光“),返回一个字符串:“光月明前床”...

    你可以使用 JavaScript 的内置函数 split 和 reverse 来实现字符串倒置. 例如,你可以这样写这个函数: function rev(str) {return str.split( ...

  9. typeof操作符的返回值

    使用typeof操作符 对一个值使用typeof操作符可能返回下列某个字符串: 1):undefined--如果这个值未定义 2):boolean--如果这个值是布尔值 3):string--如果这个 ...

最新文章

  1. 《从Excel到R 数据分析进阶指南》一3.4 更改数据格式
  2. PPT 2016的加解密功能
  3. spd不能修改服务器内存条的原因,修改内存SPD 解决蓝屏问题
  4. 爱奇艺数据中台负责人马金韬:数据中台建设与应用
  5. matlab 嵌入式,面向嵌入式系统的 MATLAB 和 Simulink
  6. UISlider 设置增量
  7. Activity 之间调用与参数传递
  8. 【修复版】ONE兔3.0版本社交社区交友婚恋视频即时通讯双端APP原生源码
  9. ES分布式架构的原理
  10. Microsoft Office下载链接
  11. Linux Raid0的配置
  12. java封装-猫狗宠物店案例
  13. RJ11电话线水晶头制作方法(图解)
  14. 通过Nginx转发的Fastdfs文件地址,在浏览器页面上会直接打开而不提示下载框的解决方案
  15. Adobe Flash Player 地区不相容的解决方法
  16. linux下安装Redis
  17. 1024程序员节打卡
  18. 全国道路运证基本信息查询服务器,道路运政管理信息系统.doc
  19. 项目管理案例分析:如何通过黄金圈法则建立共识?
  20. ES6模块体系及DDN区块链设计开发规范

热门文章

  1. Acronis移动方案(三)
  2. 创建用于 iPad 的 iOS 幻灯片应用程序
  3. 三步搞定android应用底部导航栏
  4. Aptana 开发环境执行时默认的工作路径
  5. IntelliJ IDEA 8.1.3 Web开发视频教程
  6. C++ 刷算法题笔记
  7. skip-gram模型介绍及代码
  8. python怎么计算积分_Python 计算积分实例
  9. python中的for in 语句_2、python,for..in语句
  10. c#异常类的闰年判断