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 相关文章推荐
Jquery公告滚动+AJAX后台得到数据
Apr 14 Javascript
javascript之querySelector和querySelectorAll使用说明
Oct 09 Javascript
THREE.JS入门教程(2)着色器-上
Jan 24 Javascript
js动态控制table的tr、td增加及删除的具体实现
Apr 30 Javascript
JavaScript声明变量时为什么要加var关键字
Sep 29 Javascript
jquery实现适用于门户站的导航下拉菜单效果代码
Aug 24 Javascript
用JS生成UUID的方法实例
Mar 30 Javascript
JS+canvas实现的五子棋游戏【人机大战版】
Jul 19 Javascript
Auto.js自动收取自己和好友蚂蚁森林能量脚本
Jun 28 Javascript
详解微信小程序input标签正则初体验
Aug 18 Javascript
详解django模板与vue.js冲突问题
Jul 07 Javascript
vue中渲染对象中属性时显示未定义的解决
Jul 31 Javascript
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
在PHP上显示JFreechart画的统计图方法
2013/11/03 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
2014/06/27 PHP
php支付宝在线支付接口开发教程
2016/09/19 PHP
PHP实现的mysql读写分离操作示例
2018/05/22 PHP
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
2011/12/31 Javascript
jquery 实现checkbox全选,反选,全不选等功能代码(奇数)
2012/10/24 Javascript
jquery快捷动态绑定键盘事件的操作函数代码
2013/10/17 Javascript
jquery实现手风琴效果实例代码
2013/11/15 Javascript
点击弹出层效果&弹出窗口后网页背景变暗效果的实现代码
2014/02/10 Javascript
动态加载jquery库的方法
2014/02/12 Javascript
基于 Docker 开发 NodeJS 应用
2014/07/30 NodeJs
javascript将DOM节点添加到文档的方法实例分析
2015/08/04 Javascript
详解JavaScript逻辑And运算符
2015/12/04 Javascript
AngularJS实现表单验证功能
2017/01/09 Javascript
深入学习JavaScript 高阶函数
2019/06/11 Javascript
通过微信公众平台获取公众号文章的方法示例
2019/12/25 Javascript
JavaScript实现与web通信的方法详解
2020/08/07 Javascript
夯基础之手撕javascript继承详解
2020/11/09 Javascript
[01:02:03]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS VG
2014/05/26 DOTA
python 实现归并排序算法
2012/06/05 Python
Python3基础之条件与循环控制实例解析
2014/08/13 Python
django批量导入xml数据
2016/10/16 Python
Python爬虫抓取代理IP并检验可用性的实例
2018/05/07 Python
解决seaborn在pycharm中绘图不出图的问题
2018/05/24 Python
Python控制键盘鼠标pynput的详细用法
2019/01/28 Python
pyqt远程批量执行Linux命令程序的方法
2019/02/14 Python
使用Python和Scribus创建一个RGB立方体的方法
2019/07/17 Python
python的mysql数据库建立表与插入数据操作示例
2019/09/30 Python
如何利用python读取micaps文件详解
2020/10/18 Python
CSS3的 fit-content实现水平居中
2017/09/07 HTML / CSS
Canvas绘制浮动球效果的示例
2017/12/29 HTML / CSS
开会迟到检讨书
2014/01/08 职场文书
个人简历中的自我评价怎么写
2014/01/26 职场文书
安康杯竞赛活动总结
2014/05/05 职场文书
二人合伙经营协议书
2014/09/13 职场文书
JS前端使用canvas实现扩展物体类和事件派发
2022/08/05 Javascript