JavaScript 类型

标签 javascript ecma262

根据http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf , JavaScript 有 6 种类型:undefinednullbooleanstringnumber对象

var und;
console.log(typeof und); // <-- undefined

var n = null;
console.log(typeof n); // <--- **object**!

var b = true;
console.log(typeof b); // <-- boolean

var str = "myString"
console.log(typeof str); // <-- string

var int = 10;
console.log(typeof int); // <-- number

var obj = {}
console.log(typeof obj); // <-- object

问题 1:

为什么object类型是null而不是null

问题2:

函数呢?

var f = function() {};
console.log(typeof f); // <-- function

变量f的类型为function。为何规范中没有明确说明 作为一个单独的类型?

谢谢

最佳答案

关于typeof null == 'object',这是一个很早就出现的错误,不幸的是这个错误会伴随我们很长一段时间,它是too late将在 ECMAScript 第 5 版 版本规范中修复。

关于函数,它们只是对象,但它们有一个特殊的内部属性,名为 [[Call]]调用函数时在内部使用。

typeof运算符仅通过检查对象是否具有此内部属性来区分普通对象和函数。

关于JavaScript 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2518276/

相关文章:

javascript - 使粘性 div 达到一定程度

JavaScript 类设置自身

javascript - JavaScript 中 [[Prototype]] 与原型(prototype)的关系

javascript - ECMAScript 中函数对象表达式的优先级

javascript - 为什么 `typeof this` 返回 "object"?

javascript - 在 Javascript 中使用保留字

javascript - dropDatabase 后不强制执行唯一字段约束

javascript - 控制台上没有错误,使小圆圈在刷新时改变颜色

javascript - javascript中的逻辑运算符&&和两个字符串

javascript - v8 何时会实现 ECMAScript 5?