JavaScript 中的数据类型

最新的 ECMAScript 标准定义了两大类 7 种数据类型:

  • 第一类 - 原始类型(即基本类型6 种):

    • Number
    • String
    • Boolean
    • Null
    • Undefined
    • Symbol(ECMAScript 6 新定义)
  • 第二类 - 对象类型(即引用类型1种)

    • Object

Number

JavaScript 不区分整数和浮点数,统一用Number表示:基于 IEEE 754 标准的双精度 64 位二进制格式的值(-(2^63 -1) 到 2^63 -1)。

123; // 整数123
0.456; // 浮点数0.456
1.2345e3; // 科学计数法表示1.2345x1000,等同于 1234.5
-99; // 负数
NaN; // NaN表示Not a Number,当无法计算结果时用 NaN 表示
Infinity; // Infinity 表示无限大
// 当数值超过了JavaScript的Number所能表示的最大值时,就表示为Infinity

String

字符串是以单引号'或双引号"括起来的任意文本,比如'abc',"xyz"等等。

它是一组16位的无符号整数值的“元素”。在字符串中的每个元素占据了字符串的位置。第一个元素的索引为0,下一个是索引1,依此类推。字符串的长度是它的元素的数量。

不同于类 C 语言,JavaScript 字符串是不可更改的。这意味着字符串一旦被创建,就不能被修改。但是,可以基于对原始字符串的操作来创建新的字符串。例如:

  • 获取一个字符串的子串可通过选择个别字母或者使用 String.substr().
  • 两个字符串的连接使用连接操作符 (+) 或者 String.concat().

Boolean

布尔表示一个逻辑实体,可以有两个值:truefalse

Null

只有一个值 nullnull 表示一个“空”的值,它和 0 以及空字符串 '' 不同,0 是一个数值,'' 表示长度为 0 的字符串,而 null 表示“空”。

在其他语言中,也有类似 JavaScript 的 null 的表示,例如 Java 也用 null,Swift 用 nil,Python 用 None 表示

Undefined

一个没有被赋值的变量会有(1)个默认值 undefined

JavaScript 的设计者希望用 null 表示一个空的值,而 undefined 表示值未定义。事实证明,这并没有什么卵用,区分两者的意义不大。大多数情况下,我们都应该用 nullundefined 仅仅在判断函数参数是否传递的情况下有用。

Symbols

符号(Symbols)是 ECMAScript 第6版新定义的。符号类型是唯一的并且是不可修改的, 并且也可以用来作为 Object 的 key 的值。在某些语言当中也有类似的原子类型(Atoms)。你也可以认为为它们是 C 里面的枚举类型。

ES5 的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突。如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突。这就是 ES6 引入Symbol的原因。

Object

在计算机科学中, 对象是指内存中的可以被 标识符 引用的一块区域。

在 Javascript 里,对象可以被看作是一组属性的集合。用对象字面量语法来定义一个对象时,会自动初始化一组属性。(也就是说,你定义一个 var a = "Hello",那么 a 本身就会有 a.substring 这个方法,以及 a.length 这个属性,以及其它;如果你定义了一个对象,var a = {},那么 a 就会自动有 a.hasOwnPropertya.constructor 等属性和方法。)而后,这些属性还可以被增减。属性的值可以是任意类型,包括具有复杂数据结构的对象。属性使用键来标识,它的键值可以是一个字符串或者符号值(Symbol)。

ECMAScript 定义的对象中有两种属性:数据属性访问器属性

参考

1、JavaScript 教程 - 数据类型和变量
2、JavaScript 数据类型和数据结构

你可能感兴趣的:(JavaScript 中的数据类型)