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 相关文章推荐
JavaScript 编程引入命名空间的方法与代码
Aug 13 Javascript
原生javascript获取元素样式属性值的方法
Dec 25 Javascript
javascript学习基础笔记之DOM对象操作
Nov 03 Javascript
artDialog 4.1.5 Dreamweaver代码提示/补全插件 附下载
Jul 31 Javascript
JS获取下拉框显示值和判断单选按钮的方法
Jul 09 Javascript
微信小程序 wx:for的使用实例详解
Apr 27 Javascript
详谈AngularJs 控制器、数据绑定、作用域
Jul 09 Javascript
jQuery实现动态添加节点与遍历节点功能示例
Nov 09 jQuery
javascript获取图片的top N主色值方法详解
Jan 26 Javascript
在微信小程序中渲染HTML内容的方法示例
Sep 28 Javascript
JavaScript工具库MyTools详解
Jan 01 Javascript
JavaScript中条件语句的优化技巧总结
Dec 04 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数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
2011/10/31 PHP
用PHP+MySQL搭建聊天室功能实例代码
2012/08/20 PHP
PHP屏蔽过滤指定关键字的方法
2014/11/03 PHP
PHP简单实现断点续传下载的方法
2015/09/25 PHP
学习php设计模式 php实现适配器模式
2015/12/07 PHP
Yii框架的redis命令使用方法简单示例
2019/10/15 PHP
javascript编程起步(第三课)
2007/02/27 Javascript
firefox插件Firebug的使用教程
2010/01/02 Javascript
JQuery里面的几种选择器 查找满足条件的元素$("#控件ID")
2011/08/23 Javascript
解析JavaScript中instanceof对于不同的构造器或许都返回true
2013/12/03 Javascript
js数组方法扩展实现数组统计函数
2014/04/09 Javascript
深入探密Javascript数组方法
2015/01/08 Javascript
如何实现移动端浏览器不显示 pc 端的广告
2015/10/15 Javascript
动态更新highcharts数据的实现方法
2016/05/28 Javascript
jQuery、layer实现弹出层的打开、关闭功能
2017/06/28 jQuery
详解AngularJS1.x学习directive 中‘& ’‘=’ ‘@’符号的区别使用
2017/08/23 Javascript
jQuery实现的弹幕效果完整实例
2017/09/06 jQuery
layui的table单击行勾选checkbox功能方法
2018/08/14 Javascript
[01:45]IMBATV TI4前线报道-选手到达
2014/07/07 DOTA
利用Anaconda简单安装scrapy框架的方法
2018/06/13 Python
python编程使用协程并发的优缺点
2018/09/20 Python
Python minidom模块用法示例【DOM写入和解析XML】
2019/03/25 Python
pycharm 使用anaconda为默认环境的操作
2021/02/05 Python
Html5 APP中监听返回事件处理的方法示例
2018/03/15 HTML / CSS
英国森林假期:Forest Holidays
2021/01/01 全球购物
介绍一下Java的安全机制
2012/06/28 面试题
小学毕业家长寄语
2014/01/19 职场文书
招聘专员岗位职责
2014/03/07 职场文书
2014小学植树节活动总结
2014/03/10 职场文书
应届大学生求职信
2014/07/20 职场文书
班主任先进事迹材料
2014/12/17 职场文书
2016新年晚会开场白
2015/12/03 职场文书
怎么用Python识别手势数字
2021/06/07 Python
新手入门Mysql--概念
2021/06/18 MySQL
Nginx location 和 proxy_pass路径配置问题小结
2021/09/04 Servers
关于python爬虫应用urllib库作用分析
2021/09/04 Python