JavaScript中“基本类型”之争小结


Posted in Javascript onJanuary 03, 2013

前端面试中常被问到的问题之一就是“JavaScript的基本类型有几种?”。

有的回答“数字、字符串、布尔”,有的可能会再加上“Null、Undefined”。而有人可能认为“object”也是基本类型。到底是什么样呢?

所谓“基本类型(primitive types)”的概念ECMAScript(V3,V5)中压根就没有,它只是将类型分为6种。

JavaScript中“基本类型”之争小结

ECMAScript只提到类型,用types表示,在V3,V5整个文档搜关键字“primitive”也没见“primitive type”,“primitive value”倒是有,如true/false/0-9等。这说明规范压根就没有所谓的“基本类型”、“原始类型”一说(primitive types)。如果非要说有那么object明显也是,即有6种基本类型。

一些书籍却经常使用这个概念,如《JavaScript高级程序设计》第一版、第二版,第三版。

第一版提到有5种原始类型,即Undefined、Null、Boolean、Number、String

JavaScript中“基本类型”之争小结

第二版和第三版又搞出了个simple data type,翻译为简单数据类型(也称为基本数据类型),称对象为复杂数据类型。

JavaScript中“基本类型”之争小结

另一本经典书《JavaScript权威指南(第6版)》第3章也提到了primitive types

JavaScript中“基本类型”之争小结

先分为基本类型(primitive types)和对象类型,基本类型又分为数字,字符串,布尔,及两个特殊null,undefined。

5年前JavaScript方面的书籍还很少,这两本书就是其中之二,影响也很大,可谓经典。因此受此影响的JSer不乏少数。我想书作者把语言类型分为基本类型(元类型)和对象类型(复杂类型)也是符合学习逻辑的,复杂类型由简单类型组合而成。另外也是受到其它语言如Java的影响,它们也是把类型分为基本类型(8种)和对象类型。

但ECMAScript中没有所谓的primitive types,就好比它没有类(class)的概念一样(具有其它语言能力的人仍然喜欢在JavaScript使用名词“类”)。它里面提到的就是类型,可以把它理解成基本类型,但也应该是6种。这里的基本类型也不是Java中的基本类型,因为它包含了复杂数据类型-对象。

不是所有的书都认为JavaScript中基本类型只有5种(不包括对象),《JavaScript语言精髓与编程实践》认为是6种,如下

JavaScript中“基本类型”之争小结

它没有将null归为其中,却增加了function类型。 噢,千奇百怪的答案都有,下次再有人问这个问题如何作答呢?

Javascript 相关文章推荐
关于IE7 IE8弹出窗口顶上
Dec 22 Javascript
基于jQuery的试卷自动排版系统实现代码
Jan 06 Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
Nov 11 Javascript
jQuery判断div随滚动条滚动到一定位置后停止
Apr 02 Javascript
nw.js实现类似微信的聊天软件
Mar 16 Javascript
jQuery实现带有洗牌效果的动画分页实例
Aug 31 Javascript
SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
Dec 10 Javascript
vue制作加载更多功能的正确打开方式
Oct 12 Javascript
基于canvas粒子系统的构建详解
Aug 31 Javascript
vue axios 给生产环境和发布环境配置不同的接口地址(推荐)
May 08 Javascript
Vue实现按钮级权限方案
Nov 21 Javascript
jQuery实现鼠标滑动切换图片
May 27 jQuery
Javascript图像处理—亮度对比度应用案例
Jan 03 #Javascript
javascript学习(二)javascript常见问题总结
Jan 02 #Javascript
javascript学习(一)构建自己的JS库
Jan 02 #Javascript
jQuery常见开发技巧详细整理
Jan 02 #Javascript
js显示时间 js显示最后修改时间
Jan 02 #Javascript
通过JS自动隐藏手机浏览器的地址栏实现原理与代码
Jan 02 #Javascript
js 回车提交表单两种实现方法
Dec 31 #Javascript
You might like
一个用php3编写的简单计数器
2006/10/09 PHP
php中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
php教程 插件机制在PHP中实现方案
2012/11/02 PHP
php封装json通信接口详解及实例
2017/03/07 PHP
php格式文件打开的四种方法
2018/02/24 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
2020/05/01 PHP
用Javscript实现表单复选框的全选功能
2007/05/25 Javascript
Jquery 动态添加按钮实现代码
2010/05/06 Javascript
微博@符号的用户名提示效果。(想@到谁?)
2010/11/05 Javascript
Javascript核心读书有感之类型、值和变量
2015/02/11 Javascript
黑帽seo劫持程序,js劫持搜索引擎代码
2015/09/15 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
用js动态添加html元素,以及属性的简单实例
2016/07/19 Javascript
基于JavaScript实现熔岩灯效果导航菜单
2017/01/04 Javascript
JavaScript执行环境及作用域链实例分析
2018/08/01 Javascript
vue 自定义指令自动获取文本框焦点的方法
2018/08/25 Javascript
node.js中 mysql 增删改查操作及async,await处理实例分析
2020/02/11 Javascript
nuxt 自定义 auth 中间件实现令牌的持久化操作
2020/11/05 Javascript
[01:34]2014DOTA2展望TI 剑指西雅图VG战队专访
2014/06/30 DOTA
Python设计模式之观察者模式实例
2014/04/26 Python
Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
2016/09/21 Python
python实现媒体播放器功能
2018/02/11 Python
DHC中国官方购物网站:日本通信销售No.1化妆品
2016/08/20 全球购物
BRASTY捷克:购买香水、化妆品、手袋和手表
2017/07/12 全球购物
荷兰时尚精品店:Labels Fashion
2020/03/22 全球购物
Sunglass Hut巴西网上商店:男女太阳镜
2020/10/04 全球购物
C#笔试题
2015/07/14 面试题
建筑毕业生自我鉴定
2013/10/18 职场文书
会计专业导师推荐信
2014/03/08 职场文书
就业协议书怎么填
2014/04/11 职场文书
听课评语大全
2014/04/30 职场文书
党政领导班子四风问题对照检查材料思想汇报
2014/10/02 职场文书
老公写给老婆的检讨书
2015/05/06 职场文书
举起手来观后感
2015/06/09 职场文书
2015年中秋晚会主持稿
2015/07/30 职场文书
分析SQL窗口函数之取值窗口函数
2022/04/21 Oracle