typeof操作符返回一个字符串,表示未经计算的操作数的类型。
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之外,在声明之前对块中的let
和const
变量使用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操作符返回一个字符串,表示未经计算的操作数的类型。相关推荐
- 传入一个中文字符串,返回一个字符串中的中文拼音
/** * @param 传入一个中文字符串 * @return 返回一个字符串中的中文拼音 */ private String getNameNum(Strin ...
- JAVA传入一个字符串,返回一个字符串中的大写字母
/** * * @param 传入一个字符串 * @return 返回一个字符串中的大写字母 */ private static String str ...
- C语言返回指针的函数,指针函数,让一个函数返回一个字符串
C语言函数返回指针的函数(指针函数) 什么是返回指针的函数 一个函数可以返回一个整形值 字符型值 实型值 1.如果一个函数它的返回值是一个地址(是一个指针的话),这个函数是一个返回值是指针即指针函数. ...
- 解决springmvc在单纯返回一个字符串对象时所出现的乱码情况(极速版)
使用springmvc框架开发了这么长时间,之前都是直接返回jsp页面,乱码情况都是通过配置和手动编解码来解决,但是今天突然返回一段单纯的字符串时,发现中文乱码情况解决不了了,下面就给各位分享一下如何 ...
- mvc后台字符串转换html,c# – 从MVC Controller返回一个字符串到jQuery
在ASP.NET MVC控制器中,操作不返回字符串.他们返回ActionResults. 因此,首先要修复你的行动(请阅读下面的内容,了解为什么我将修正用斜体,这是因为这只是第一阶段): public ...
- SQL中返回一个字符串在另一个中存在的次数
ALTER FUNCTION [reg].[f_GetSameStringCntNoSort] ( @str1 VARCHAR(100),--源字符串,取该串中的@strLen长度的字符是否在目的字符 ...
- Java黑皮书课后题第10章:**10.25(新的字符串split方法)String类中的split方法会返回一个字符串数组,该数组是由分隔符分隔开的子串构成的
Java黑皮书课后题第10章:**10.25(新的字符串split方法) 题目 代码 运行实例 题目 代码 public class Test25 {public static String[] sp ...
- 用js编写一个函数:rev(str),功能是实现字符串倒置:rev(”床前明月光“),返回一个字符串:“光月明前床”...
你可以使用 JavaScript 的内置函数 split 和 reverse 来实现字符串倒置. 例如,你可以这样写这个函数: function rev(str) {return str.split( ...
- typeof操作符的返回值
使用typeof操作符 对一个值使用typeof操作符可能返回下列某个字符串: 1):undefined--如果这个值未定义 2):boolean--如果这个值是布尔值 3):string--如果这个 ...
最新文章
- 《从Excel到R 数据分析进阶指南》一3.4 更改数据格式
- PPT 2016的加解密功能
- spd不能修改服务器内存条的原因,修改内存SPD 解决蓝屏问题
- 爱奇艺数据中台负责人马金韬:数据中台建设与应用
- matlab 嵌入式,面向嵌入式系统的 MATLAB 和 Simulink
- UISlider 设置增量
- Activity 之间调用与参数传递
- 【修复版】ONE兔3.0版本社交社区交友婚恋视频即时通讯双端APP原生源码
- ES分布式架构的原理
- Microsoft Office下载链接
- Linux Raid0的配置
- java封装-猫狗宠物店案例
- RJ11电话线水晶头制作方法(图解)
- 通过Nginx转发的Fastdfs文件地址,在浏览器页面上会直接打开而不提示下载框的解决方案
- Adobe Flash Player 地区不相容的解决方法
- linux下安装Redis
- 1024程序员节打卡
- 全国道路运证基本信息查询服务器,道路运政管理信息系统.doc
- 项目管理案例分析:如何通过黄金圈法则建立共识?
- ES6模块体系及DDN区块链设计开发规范