博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于基本数据类型
阅读量:5291 次
发布时间:2019-06-14

本文共 2275 字,大约阅读时间需要 7 分钟。

前端面试中常被问到的问题之一就是“JavaScript的基本类型有几种?”。

有的回答“数字、字符串、布尔”,有的可能会再加上“Null、Undefined”。而有人可能认为“object”也是基本类型。到底是什么样呢?

 

所谓“基本类型(primitive types)”的概念ECMAScript(V3,V5)中压根就没有,它只是将类型分为6种。

ECMAScript只提到类型,用types表示,在V3,V5整个文档搜关键字“primitive”也没见“primitive type”,“primitive value”倒是有,如true/false/0-9等。这说明规范压根就没有所谓的“基本类型”、“原始类型”一说(primitive types)。如果非要说有那么object明显也是,即有6种基本类型。

 

一些书籍却经常使用这个概念,如《JavaScript高级程序设计》第一版、第二版,第三版。

第一版提到有5种原始类型,即Undefined、Null、Boolean、Number、String

第二版和第三版又搞出了个simple data type,翻译为简单数据类型(也称为基本数据类型),称对象为复杂数据类型。

 

另一本经典书《JavaScript权威指南(第6版)》第3章也提到了primitive types

先分为基本类型(primitive types)和对象类型,基本类型又分为数字,字符串,布尔,及两个特殊null,undefined。

 

5年前JavaScript方面的书籍还很少,这两本书就是其中之二,影响也很大,可谓经典。因此受此影响的JSer不乏少数。我想书作者把语言类 型分为基本类型(元类型)和对象类型(复杂类型)也是符合学习逻辑的,复杂类型由简单类型组合而成。另外也是受到其它语言如Java的影响,它们也是把类 型分为基本类型(8种)和对象类型。

但ECMAScript中没有所谓的primitive types,就好比它没有类(class)的概念一样(具有其它语言能力的人仍然喜欢在JavaScript使用名词“类”)。它里面提到的就是类型,可 以把它理解成基本类型,但也应该是6种。这里的基本类型也不是Java中的基本类型,因为它包含了复杂数据类型-对象。

 

不是所有的书都认为JavaScript中基本类型只有5种(不包括对象),《JavaScript语言精髓与编程实践》认为是6种,如下

它没有将null归为其中,却增加了function类型。 它的依据是typeof的结果只有6种(仅含ES自身,不包括宿主对象),如下

1
2
3
4
5
6
7
8
var
a = 1, b =
'2'
, c =
true
, d, e =
null
, f =
function
(){}
 
typeof
a ===
'number'
;
// true
typeof
b ===
'string'
;   
// true
typeof
c ===
'boolean'
;
// true
typeof
d ===
'undefined'
;
// true
typeof
e ===
'object'
;
// true
typeof
f ===
'function'
;
// true

一共是6中类型,注意null的类型时object。有的书说null的实现是当初的一个错误,谁知道呢。

 

我们来看wiki中的定义

  • a basic type is a  provided by a  as a basic building block. Most languages allow more complicated  to be recursively constructed starting from basic types.
  • a built-in type is a data type for which the programming language provides built-in support. In most programming languages, all basic data types are built-in. In addition, many languages also provide a set of composite data types. Opinions vary as to whether a built-in type that is not basic should be considered "primitive".

 

翻译以下

  • 基本类型是这样一种数据类型,它是由编程语言提供的最基本的构建块,多数语言还允许众多复杂的由基本类型组成的复合数据类型
  • 内置类型是由编程语言自身提供的类型,多数编程语中所有的基本类型都是内置的。此外,很多语言还提供一组复合数据类型。一个内置类型是不是该认为是“原始的”的类型这个一直存在争议。

 

下次再有人问这个问题如何作答呢?

 

转载于:https://www.cnblogs.com/gongchengniu/p/5473824.html

你可能感兴趣的文章
导入Excel数据时对数据校验提示方法
查看>>
Android学习笔记(十) Activity的生命周期
查看>>
毕业设计:HomeFragment(二)
查看>>
(转)场景管理
查看>>
浅谈提高工作效率
查看>>
Python中的元类(metaclass)
查看>>
动态SQL基本语句用法
查看>>
【Python网络编程】selenium之等待页面异步加载完成
查看>>
学习进度条
查看>>
CentOS7 64位下MySQL5.7安装与配置(YUM)
查看>>
657. Judge Route Circle
查看>>
python之shutil模块使用方法
查看>>
eclipse下载更新可用的SDK 2018-11-12
查看>>
HDU-2006
查看>>
ORCL [orcler] 计算两个时间的差 用时分秒格式展示
查看>>
day06 --class --home
查看>>
在cron运行hive时,无法打出mapreduce日志
查看>>
C++类中的static数据成员,static成员函数
查看>>
nmon监控与 nmon analyser分析
查看>>
手把手教你cuda5.5与VS2010的编译环境搭建
查看>>