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 相关文章推荐
使用prototype.js进行异步操作
Feb 07 Javascript
7款风格新颖的jQuery/CSS3菜单导航分享
Apr 23 Javascript
给事件响应函数传参数的四种方式小结
Dec 05 Javascript
JavaScript中的分号插入机制详细介绍
Feb 11 Javascript
一个简单不报错的summernote 图片上传案例
Jul 11 Javascript
HTML页面,测试JS对C函数的调用简单实例
Aug 09 Javascript
JS实现间歇滚动的运动效果实例
Dec 22 Javascript
使用D3.js创建物流地图的示例代码
Jan 27 Javascript
JavaScript生成指定范围随机数和随机序列的方法
May 05 Javascript
详解适配器在JavaScript中的体现
Sep 28 Javascript
JavaScript的级联函数用法简单示例【链式调用】
Mar 26 Javascript
jQuery带控制按钮轮播图插件
Jul 31 jQuery
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
hessian 在PHP中的使用介绍
2010/12/13 PHP
PHP图片上传代码
2013/11/04 PHP
php实现三级级联下拉框
2016/04/17 PHP
php设计模式之工厂方法模式分析【星际争霸游戏案例】
2020/01/23 PHP
基于JQuery的数字改变的动画效果--可用来做计数器
2010/08/11 Javascript
解决iframe的frameborder在chrome/ff/ie下的差异
2010/08/12 Javascript
正则表达式中特殊符号及正则表达式的几种方法总结(replace,test,search)
2013/11/26 Javascript
jQuery中data()方法用法实例
2014/12/27 Javascript
JavaScript基础函数整理汇总
2015/01/30 Javascript
浅析JavaScript声明变量
2015/12/21 Javascript
AngularJS 输入验证详解及实例代码
2016/07/28 Javascript
JavaScript SHA512加密算法详细代码
2016/10/06 Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
2017/01/21 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
js制作简单的音乐播放器的示例代码
2017/08/28 Javascript
浅谈 Webpack 如何处理图片(开发、打包、优化)
2019/05/15 Javascript
nuxt框架中对vuex进行模块化设置的实现方法
2019/09/06 Javascript
[05:45]Ti4观战指南(下)
2014/07/07 DOTA
python文件和目录操作方法大全(含实例)
2014/03/12 Python
10个易被忽视但应掌握的Python基本用法
2015/04/01 Python
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
2015/04/09 Python
Python中不同进制的语法及转换方法分析
2016/07/27 Python
浅谈Pycharm调用同级目录下的py脚本bug
2018/12/03 Python
Python函数和模块的使用总结
2019/05/20 Python
python切割图片的示例
2020/11/12 Python
HTML5对手机页面长按会粘贴复制禁用的解决方法
2016/07/19 HTML / CSS
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
2012/12/09 HTML / CSS
iHerb香港:维生素、补充剂和天然保健品
2017/08/01 全球购物
RUIFIER官网:英国奢侈高级珠宝品牌
2020/06/12 全球购物
预备党员承诺书
2014/03/25 职场文书
乡镇四风对照检查材料
2014/08/31 职场文书
幼师中班个人总结
2015/02/12 职场文书
2015教师年度考核评语
2015/03/25 职场文书
springBoot基于webSocket实现扫码登录
2021/06/22 Java/Android
Javascript的promise,async和await的区别详解
2022/03/24 Javascript
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
2022/04/13 Java/Android