JS数据类型
JS的数据类型是动态的。
首先,进行分类讨论,分类的依据是根据存储方式的不同。
一.基本数据类型
1.undefined
当声明一个变量,但并未赋值,这个变量的类型就为undefined;或者给变量附一个undefined
var a;
console.log(typeof a); //输出undefined
字面量
只有一个,undefined
2.number
当给一个变量赋一个数值,这个变量的类型为number
var a = 123;
console.log(typeof a); //输出number
字面量
- 任何数字(包括整数和浮点数)
- Infinity (表示无穷大)
- NaN (表示不是一个数字)
关于数字字面量,以0x开头,表示16进制;以0开头,表示8进制;以0b开头,表示二进制
3.string
当给一个变量赋一个字符串(使用双引号括起来),这个变量的类型为string
字面量
通过引号引起的字符集合
字符串中,可以有转义字符(具体的可以上百度查表),还可以直接将unicode编码转换为字符,\uxxxx,xxxx为4位16进制。
var a = "123";
console.log(typeof a); //输出string
4.boolean
当给一个变量赋一个布尔值(true或者false,注意,没有引号),这个变量的类型为boolean
var a = true;
console.log(typeof a); //输出boolean
字面量
- true 表示逻辑真
- false 表示逻辑假
5.null
var a = null;
console.log(typeof a); //输出object
注意,这里的分类是按照存储的本质进行分类的,null是直接存在栈内存的(后面说),所以被null被认为是基本数据类型
字面量
只有一个,null
二.引用数据类型
1.对象
var a = {};
console.log(typeof a); //输出object
2.数组(其实,数组也是一个特殊的对象)
var a = ["1", "2"];
console.log(typeof a); //输出object
3.函数
var a = new Function();
console.log(typeof a); //输出function
三.基本数据类型和引用数据类型的分类依据(本质差别)
1.基本数据类型
基本数据类型的值,就存储在栈内存中。
2.引用数据类型
引用数据类型的值,存储在堆内存中;对象在堆内存中的地址,存储在栈内存中。(和Java中的引用概念一致,如果对C熟悉,其实就是一个指针)