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 相关文章推荐
九种js弹出对话框的方法总结
Mar 12 Javascript
jQuery 隐藏和显示 input 默认值示例
Jun 03 Javascript
javaScript基础语法介绍
Feb 28 Javascript
基于JavaScript实现鼠标向下滑动加载div的代码
Aug 31 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
Nov 21 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
Dec 27 Javascript
JS实现的简单标签点击切换功能示例
Sep 21 Javascript
分享vue里swiper的一些坑
Aug 30 Javascript
Angular7.2.7路由使用初体验
Mar 01 Javascript
彻底揭秘keep-alive原理(小结)
May 05 Javascript
Node.js系列之发起get/post请求(2)
Aug 30 Javascript
JavaScript实现栈结构详细过程
Dec 06 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计划任务、定时执行任务的实现代码
2011/04/23 PHP
PHP动态页生成静态页的3种常用方法
2014/11/13 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
2016/07/20 PHP
PHP htmlspecialchars_decode()函数用法讲解
2019/03/01 PHP
IE与firefox之jquery用法区别
2008/10/03 Javascript
javascript window对象属性整理
2009/10/24 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
2020/09/12 Javascript
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
2013/04/08 Javascript
JavaScript函数定义的常见注意事项小结
2014/09/16 Javascript
JavaScript获取图片真实大小代码实例
2014/09/24 Javascript
基于BootStrap Metronic开发框架经验小结【五】Bootstrap File Input文件上传插件的用法详解
2016/05/12 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
2016/08/23 Javascript
微信小程序 Audio API详解及实例代码
2016/09/30 Javascript
jQuery实现简易的输入框字数计数功能示例
2017/01/16 Javascript
Angular2生命周期钩子函数的详细介绍
2017/07/10 Javascript
说说node中的可读流和可写流的区别
2018/06/01 Javascript
微信小程序画布圆形进度条显示效果
2020/11/17 Javascript
三种Webpack打包方式(小结)
2018/09/19 Javascript
Vue中用JSON实现刷新界面不影响倒计时
2020/10/26 Javascript
python selenium UI自动化解决验证码的4种方法
2018/01/05 Python
python实现excel读写数据
2021/03/02 Python
Python读取Excel表格,并同时画折线图和柱状图的方法
2018/10/14 Python
如何利用Anaconda配置简单的Python环境
2019/06/24 Python
pyinstaller参数介绍以及总结详解
2019/07/12 Python
详解Python调用系统命令的六种方法
2021/01/28 Python
FC-Moto英国:欧洲最大的摩托车服装和头盔商店之一
2019/08/25 全球购物
屈臣氏乌克兰:Watsons UA
2019/10/29 全球购物
治超工作实施方案
2014/05/04 职场文书
设计专业自荐信
2014/06/19 职场文书
世博会口号
2014/06/20 职场文书
校园新闻广播稿5篇
2014/10/10 职场文书
学习保证书
2015/01/17 职场文书
创先争优个人总结
2015/03/04 职场文书
升职自荐信怎么写
2015/03/05 职场文书
python 实现图片特效处理
2022/04/03 Python
在Windows Server 2012上安装 .NET Framework 3.5 所遇到的问题
2022/04/29 Servers