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 相关文章推荐
用Juery网页选项卡实现代码
Jun 13 Javascript
javascript 进阶篇3 Ajax 、JSON、 Prototype介绍
Mar 14 Javascript
js 自定义个性下拉选择框示例
Aug 20 Javascript
sails框架的学习指南
Dec 22 Javascript
javascript实现复选框超过限制即弹出警告框的方法
Feb 25 Javascript
javascript中html字符串转化为jquery dom对象的方法
Aug 27 Javascript
第一次接触神奇的Bootstrap菜单和导航
Aug 01 Javascript
JavaScript实现省市县三级级联特效
May 16 Javascript
vue.js项目打包上线的图文教程
Nov 16 Javascript
angularjs 动态从后台获取下拉框的值方法
Aug 13 Javascript
浅谈VUE单页应用首屏加载速度优化方案
Aug 28 Javascript
微信小程序学习笔记之本地数据缓存功能详解
Mar 29 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的urlencode()URL编码函数浅析
2011/08/09 PHP
web server使用php生成web页面的三种方法总结
2013/10/28 PHP
php 无限分类 树形数据格式化代码
2016/10/11 PHP
PHP+iframe图片上传实现即时刷新效果
2016/11/18 PHP
php更新cookie内容的详细方法
2019/09/30 PHP
slice函数的用法 之不错的应用
2006/12/29 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
2013/06/24 Javascript
浅析jquery的js图表组件highcharts
2014/03/06 Javascript
javascript操作excel生成报表示例
2014/05/08 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
2020/08/11 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
2015/04/06 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
2015/08/13 Javascript
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
2018/05/22 jQuery
[00:57]辉夜杯战队访谈宣传片—VG
2015/12/25 DOTA
[39:11]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第二局
2016/02/28 DOTA
python类的继承实例详解
2017/03/30 Python
python中利用h5py模块读取h5文件中的主键方法
2018/06/05 Python
Flask框架WTForm表单用法示例
2018/07/20 Python
Python turtle绘画象棋棋盘
2019/08/21 Python
Python私有属性私有方法应用实例解析
2020/09/15 Python
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
英国美发和美容产品商城:HQhair
2019/02/08 全球购物
美国克罗格超市在线购物:Kroger
2019/06/21 全球购物
北京-环亚运商测试题.net程序员初步测试题
2013/05/28 面试题
英文版餐饮业求职信
2013/10/18 职场文书
招商业务员岗位职责
2013/12/16 职场文书
医科大学毕业生自荐信
2014/02/03 职场文书
幼儿园母亲节活动方案
2014/03/10 职场文书
应聘编辑自荐信范文
2014/03/12 职场文书
学术会议主持词
2014/03/17 职场文书
房屋转让协议书
2014/04/11 职场文书
2016廉洁从业学习心得体会
2016/01/19 职场文书
暑假开始了,你的暑假学习计划写好了吗?
2019/07/04 职场文书
《合作意向书》怎么写?
2019/08/20 职场文书
python自然语言处理之字典树知识总结
2021/04/25 Python