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 相关文章推荐
treepanel动态加载数据实现代码
Dec 15 Javascript
js 实现在离开页面时提醒未保存的信息(减少用户重复操作)
Jan 16 Javascript
下拉菜单点击实现连接跳转功能的js代码
May 19 Javascript
IE下JS读取xml文件示例代码
Aug 05 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
Aug 01 Javascript
利用JS实现点击按钮后图片自动切换的简单方法
Oct 24 Javascript
jsp 网站引入外部css或者js失效问题解决
Oct 31 Javascript
微信小程序wx.getImageInfo()如何获取图片信息
Jan 26 Javascript
从零开始学习搭建React脚手架项目
Aug 23 Javascript
js canvas实现5张图片合成一张图片
Jul 15 Javascript
解决layui数据表格排序图标被超出的表头挤出去的问题
Sep 19 Javascript
Vue中inheritAttrs的使用实例详解
Dec 31 Vue.js
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更新修改excel中的内容实例代码
2014/02/26 PHP
Cygwin中安装PHP方法步骤
2015/07/04 PHP
PHP 文件上传后端处理实用技巧方法
2017/01/06 PHP
Yii2.0框架behaviors方法使用实例分析
2019/09/30 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
2019/10/04 PHP
Nigma vs Liquid BO3 第一场2.14
2021/03/10 DOTA
JavaScript实际应用:innerHTMl和确认提示的使用
2006/06/22 Javascript
jquery 可排列的表实现代码
2009/11/13 Javascript
JQuery扩展插件Validate 3通过参数设置错误信息
2011/09/05 Javascript
javascript模版引擎-tmpl的bug修复与性能优化分析
2011/10/23 Javascript
javascript常用功能汇总
2015/07/05 Javascript
JavaScript中数组的各种操作的总结(必看篇)
2017/02/13 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
ES6解构赋值实例详解
2017/10/31 Javascript
vuex 项目结构目录及一些简单配置介绍
2018/04/08 Javascript
Node.js 使用request模块下载文件的实例
2018/09/05 Javascript
layui动态加载多表头的实例
2019/09/05 Javascript
JS自定义右键菜单实现代码解析
2020/07/16 Javascript
Python类方法__init__和__del__构造、析构过程分析
2015/03/06 Python
python使用MySQLdb访问mysql数据库的方法
2015/08/03 Python
Python基于回溯法解决01背包问题实例
2017/12/06 Python
解决django服务器重启端口被占用的问题
2019/07/26 Python
python实现将中文日期转换为数字日期
2020/07/14 Python
关于Python3爬虫利器Appium的安装步骤
2020/07/29 Python
CSS3 真的会替代 SCSS 吗
2021/03/09 HTML / CSS
全球性的女装店:storets
2019/06/12 全球购物
卫生系统先进事迹
2014/05/13 职场文书
副总经理岗位职责范本
2014/09/30 职场文书
平安家庭事迹材料
2014/12/20 职场文书
2015年高校就业工作总结
2015/05/04 职场文书
西游降魔篇观后感
2015/06/15 职场文书
新娘父亲婚礼致辞
2015/07/27 职场文书
2016年大学迎新晚会工作总结
2015/10/15 职场文书
2016最新离婚协议书范本及程序
2016/03/18 职场文书
教师节作文之小学四年级
2019/09/03 职场文书
MySQL非空约束(not null)案例讲解
2021/08/23 MySQL