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 相关文章推荐
javascript Object与Function使用
Jan 11 Javascript
node.js中的console.error方法使用说明
Dec 10 Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
Sep 24 Javascript
AngularJS基础 ng-init 指令简单示例
Aug 02 Javascript
Bootstrap弹出框之自定义悬停框标题、内容和样式示例代码
Jul 11 Javascript
echarts鼠标覆盖高亮显示节点及关系名称详解
Mar 17 Javascript
tracking.js页面人脸识别插件使用方法
Apr 16 Javascript
微信小程序实现简单表格
Feb 14 Javascript
javascript实现blob加密视频源地址的方法
Aug 08 Javascript
五分钟搞懂Vuex实用知识(小结)
Aug 12 Javascript
详解基于Vue/React项目的移动端适配方案
Aug 23 Javascript
你不知道的SpringBoot与Vue部署解决方案
Nov 09 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实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
php之可变函数的实例详解
2017/09/13 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
JavaScript实现的使用键盘控制人物走动实例
2014/08/27 Javascript
jQuery结合AJAX之在页面滚动时从服务器加载数据
2015/06/30 Javascript
JavaScript制作简单的日历效果
2016/03/10 Javascript
整理JavaScript对DOM中各种类型的元素的常用操作
2016/05/05 Javascript
去除html代码里面的script正则方法
2016/05/19 Javascript
JavaScript轮播停留效果的实现思路
2018/05/24 Javascript
JavaScript使用闭包模仿块级作用域操作示例
2019/01/21 Javascript
Vue中的transition封装组件的实现方法
2019/08/13 Javascript
Moment.js实现多个同时倒计时
2019/08/26 Javascript
[02:39]DOTA2国际邀请赛助威团西雅图第一天
2013/08/08 DOTA
[43:35]EG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[04:54]DOTA2-DPC中国联赛1月31日Recap集锦
2021/03/11 DOTA
python中的对象拷贝示例 python引用传递
2014/01/23 Python
使用 Python 获取 Linux 系统信息的代码
2014/07/13 Python
详细解读Python的web.py框架下的application.py模块
2015/05/02 Python
python实现马耳可夫链算法实例分析
2015/05/20 Python
Python fileinput模块使用实例
2015/05/28 Python
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
2015/07/27 Python
使用python实现BLAST
2018/02/12 Python
CentOS7下python3.7.0安装教程
2018/07/30 Python
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
详解Python字典的操作
2019/03/04 Python
谈谈Python中的while循环语句
2019/03/10 Python
Python中Numpy mat的使用详解
2019/05/24 Python
详解Python3 中的字符串格式化语法
2020/01/15 Python
全球性的在线购物网站:Zapals
2017/03/22 全球购物
Love, Bonito国际官网:新加坡女装品牌
2021/03/13 全球购物
生物制药专业求职信
2014/03/11 职场文书
2015学习委员工作总结范文
2015/04/03 职场文书
2019学子的答谢词范本!
2019/07/05 职场文书
简单总结SpringMVC拦截器的使用方法
2021/06/28 Java/Android
Netty分布式客户端接入流程初始化源码分析
2022/03/25 Java/Android