JavaScript七种数据类型简述

ES6中定义了7种数据类型:String, Number, Boolean, Symbol, Null, Undefined, Object,其中Symbol是ES6才新引入的数据类型。


JavaScript拥有动态类型

JavaScript的变量可以用来存储不同类型的数据

var a = 1;
a = 'mike';

也是合法的。


Undefined

变量被声明时如果没有被赋值,那么变量的类型就是Undefined。


Null

Null类型只有一个值null,是空值的意思,可以通过给变量赋值设置为null,表示清空该变量。

typeof(null) 返回 object

在JavaScript中,typeof(null)的返回值是object,这并不是说值为null的变量的类型是object,这是一个历史遗留问题,1995年第一版的JavaScript所有值都用32位二进制数来存储,其中包括存储数据类型的标签和存储数据的值,而object类型的标签和null类型的标签都是000,因此typeof(null)的返回值是object,从逻辑上来讲,null也可以是空对象。

但是,null的数据类型仍然是Null,typeof(null)返回object是一个历史遗留bug,而且应该不会被修复,因为这会影响到已有的代码。


Boolean

Boolean类型只有两个值,true和false,布尔型变量一般用于条件判断。

其他类型的变量也可以通过Boolean()函数来转换成布尔型变量,其值对应表如下:

type 转换为true 转换为false
Undefined 不适用 undefined
Null 不适用 null
Number 非0,NaN的数字 0,NaN
String 任何非空字符串 ''空字符串
Symbol 任何对象 不适用
Object 任何对象 null

Number

Number类型的值可以是-(2的63次方-1) ~ (2的63次方-1)的数字,+Infinity, -Infinity, NaN。
Number类型的变量不区分整数和浮点数,很大或很小的数会通过科学记数法来表达。

这里要注意的是,NaN与任何Number类型的值都不相等,包括NaN本身。


String

String类型用来存储文本,可以用单引号或双引号表示字符串

var name = 'Jack';
var name = "Jack";

JavaScript中有多种操作String的方法,具体见JavaScript String 对象


Symbol

ES6引入Symbol的目的就在于引入一种机制,保证对象的每个属性名字都是独一无二的,防止属性名冲突。

symbol值通过Symbol()函数生成,可以用作对象的属性名,如

var name = Symbol();
var age = Symbol();
var student = {};
student[name] = 'Jack';
student[age] = 12;

由于Symbol类型的变量是独一无二的,即使给Symbol()函数传入相同的参数,生成的Symbol变量也是不同的,因此

var a = Symbol();
var b = Symbol();
var c = Symbol("name");
var d = Symbol("name");
a === b; //false
c === d; //false

Symbol类型的属性不能用for...in, for...of去遍历,需要用Object.getOwnPropertySymbols方法去遍历

var a = Symbol();
var b = Symbol();
var c = Symbol();
var car = {
    [a] : 'Benz',
    [b] : 'Tesla',
    [c] : 'Volvo'
}
for(let prop of Object.getOwnPropertySymbol(car)){
    document.write(car[prop]);
}

Object

对象由{}声明,{}内的时形式为key: value的键值对,其中的key只能是Srting或者Symbol类型的变量,多个键值对之间用逗号隔开,如

student = {
    name : 'Jack',
    age : 12,
    id : 2001    
};

你可能感兴趣的:(JavaScript七种数据类型简述)