JavaScript 数据类型
JavaScript 数据类型分为基本数据类型和引用数据类型。
其中,基本数据类型有 6 种:字符串(String)、数值(Number)、布尔(Boolean)、空(null)、未定义(undefined)、Symbol(ES6 语法新增)。
另外,有 3 种引用类型:对象(Object)、数组(Array)、函数(Function)。
由于 JavaScript 是一种无类型的语言,因此在 JS 脚本中不需要指定一个变量的数据类型,解释器会自动推算出某个变量的正确数据类型。此外,还可以将不同类型的值赋给一种类型的变量。例如下面代码先定义了一个字符串变量,然后再将一个整数类型的值赋给它。
var id = "1101";
id = 1101;
基本数据类型
字符串(String)
String 类型将字符数据存储为一个字符串,字符数据可以用单引号或双引号来指定。所有包含在引号中的数据将被赋值给字符串变量。
示例:
var myString = "GetIoT";
var anotherString = "GetIoT.tech";
数值(Number)
Number 类型将数据存储为一个数值,数字可以带小数点,也可以不带。
示例:
var myInteger = 1;
var cost = 7.25;
布尔(Boolean)
Boolean 类型存储一个位(Bit),其值要么是 true(真),要么是 false(假)。布尔值通常用于标志,例如在代码开始处把一个布尔变量设置为 false,然后在完成时检查它以观察代码是否执行到一个特定的位置。
示例:
var yes = true;
var no = false;
空(null)
有时候,变量中没有存储任何值,比如当我们不再需要某个变量时,可以将这个变量设置为 null
。
示例:
var newVar = null;
使用 null
比赋值为 0 或空字符串(""
)更好,因为它们可能是变量的有效值。
未定义(undefined)
undefined
的含义与用法都和 null
差不多,这与 JavaScript 的历史有关。
在 JavaScript 的最初版本中是这样区分的:null
是一个表示"无"的对象,转为数值时为 0;undefined
是一个表示"无"的原始值,转为数值时为 NaN
。
示例:
var newVar = undefined;
下面是 null
和 undefined
在使用上的一些细微差别。
null
表示“没有对象”,即此处不应该有值。典型用法是:- 作为函数的参数,表示该函数的参数不是对象;
- 作为对象原型链的终点。
undefined
表示“缺少值”,即此处应该有一个值,但还没有定义。典型用法是:- 声明了变量,但没有赋值时,其值为
undefined
; - 调用函数时,应该提供的参数没有提供,该参数等于
undefined
; - 对象没有赋值的属性,该属性的值为
undefined
; - 函数没有返回值时,默认返回
undefined
。
- 声明了变量,但没有赋值时,其值为
Symbol 类型
ES6 引入了一种新的原始数据类型 Symbol,表示独一无二的值。Symbol 值通过 Symbol 函数生成。这就是说 ,对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的 Symbol 类型。凡是属性名属于 Symbol 类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。
示例:
let s = Symbol();
console.log(typeof s); // 输出 symbol
引用数据类型
对象(Object)
JavaScript 对象由花括号包裹,在括号内部,对象的属性以名称和值对的形式 (name:value)
来定义,简称键值对。
示例:
var obj = {"name":"Rudy", "occupation":"Hacker", "age", "Unknown"};
使用对象时,可以通过 object.property
语法访问对象中的值与函数。例如:
var name = obj.name;
数组(Array)
一个带索引的数组是一组独立的不同的数据项,这些数据项全部在一个单独的变量名中存储。在数组中的条目可以使用 array[index]
的方式来访问,第一个元素的索引为 0。
示例:
var arr = ["one", "two", "three"];
var first = arr[0];
函数(Function)
将在后面章节介绍,参考 JavaScript 函数定义。