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 相关文章推荐
关于Blog顶部的滚动导航条代码
Sep 25 Javascript
超级酷和最实用的jQuery实例收集(20个)
Apr 21 Javascript
JS拖动技术 关于setCapture使用
Dec 09 Javascript
广泛收集的jQuery拖放插件集合
Apr 09 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
Dec 24 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
Sep 27 Javascript
JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用
Sep 19 Javascript
如何理解jQuery中的ajaxSubmit方法
Mar 13 Javascript
javascript用rem来做响应式开发
Jan 13 Javascript
Angular5中调用第三方js插件的方法
Feb 26 Javascript
vue ajax 拦截原理与实现方法示例
Nov 29 Javascript
谈一谈vue请求数据放在created好还是mounted里好
Jul 27 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最常用的ini函数分析 针对PHP.ini配置文件
2010/04/22 PHP
Smarty中的注释和截断功能介绍
2015/04/09 PHP
php array_values 返回数组的值实例详解
2016/11/17 PHP
php中实现字符串翻转的方法
2017/02/22 PHP
PHP 代码简洁之道(小结)
2019/10/16 PHP
走出JavaScript初学困境—js初学
2008/12/29 Javascript
JavaScript 工具库 Cloudgamer JavaScript Library v0.1 发布
2009/10/29 Javascript
浅析用prototype定义自己的方法
2013/11/14 Javascript
Javascript中实现String.startsWith和endsWith方法
2015/06/10 Javascript
简单介绍JavaScript数据类型之隐式类型转换
2015/12/28 Javascript
关于RequireJS的简单介绍即使用方法
2016/10/20 Javascript
浅谈Angular4中常用管道
2017/09/27 Javascript
jQuery实现动态显示select下拉列表数据的方法
2018/02/05 jQuery
JavaScript实现封闭区域布尔运算的示例代码
2018/06/25 Javascript
vue移动端实现红包雨效果
2020/06/23 Javascript
原生JS实现简单的无缝自动轮播效果
2018/09/26 Javascript
bootstrap下拉分页样式 带跳转页码
2018/12/29 Javascript
vue项目中在外部js文件中直接调用vue实例的方法比如说this
2019/04/28 Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
2020/09/18 Javascript
[03:00]DOTA2-DPC中国联赛1月18日Recap集锦
2021/03/11 DOTA
浅谈Python的异常处理
2016/06/19 Python
Tensorflow实现卷积神经网络的详细代码
2018/05/24 Python
Python实现查找字符串数组最长公共前缀示例
2019/03/27 Python
Python 用matplotlib画以时间日期为x轴的图像
2019/08/06 Python
Django 自动生成api接口文档教程
2019/11/19 Python
一文读懂python Scrapy爬虫框架
2021/02/24 Python
美国领先的奢侈手表在线零售商:WatchMaxx
2017/12/17 全球购物
沙龙级头发造型工具:FOXYBAE
2018/07/01 全球购物
迪卡侬中国官网:Decathlon中国
2020/08/10 全球购物
会计专业的自荐信
2013/12/12 职场文书
生物制药专业自我鉴定
2014/02/19 职场文书
《日月潭》教学反思
2014/02/28 职场文书
倡议书格式范文
2014/04/14 职场文书
学校安全教育月活动总结
2014/07/07 职场文书
2015年清明节网上祭英烈留言寄语
2015/03/04 职场文书
OpenCV3.3+Python3.6实现图片高斯模糊
2021/05/18 Python