编程向导-JavaScript-基础语法-typeof

梦里繁花落尽,此情未央,此意难忘,弦虽断,曲犹扬。!

与技术共同呼吸,与程序员共命运。世树科技 承“技驱动,理致胜”理念、国风编程。

typeof

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

语法

typeof operand;

参数

参数说明
perand是一个表达式,表示对象或原始值,其类型将被返回

返回值

下表总结了 typeof 可能的返回值。

有关类型和原始值的更多信息,可查看 JavaScript 数据结构 页面。

类型结果
Undefined'undefined'
Null'object'
Boolean'boolean'
Number'number'
String'string'
Symbol'symbol'
宿主对象Implementation-dependent
函数对象'function'
任何其他对象'object'

示例

代码示例

Number
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';
// 但不要使用这种形式!
String
typeof '' === 'string';
typeof 'bla' === 'string';

typeof typeof 1 === 'string';
// typeof 总是返回一个字符串

typeof String('abc') === 'string';
// 但不要使用这种形式!
Boolean
typeof true === 'boolean';
typeof false === 'boolean';
typeof Boolean(true) === 'boolean';
// 但不要使用这种形式!
Symbol
typeof Symbol() === 'symbol';
typeof Symbol('foo') === 'symbol';
typeof Symbol.iterator === 'symbol';
Undefined
typeof undefined === 'undefined';
typeof declaredButUndefinedVariable === 'undefined';
typeof undeclaredVariable === 'undefined';
Object
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';
Function
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"

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

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wtrees_松阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值