众所周知,前端Javascript里共有两种数据类型。
一、简单数据类型
简单数据类型也叫值类型,就是值直接储存在变量里。共有以下几种类型:
1、数字型Number
Number,包含整型和浮点型还有NaN,如1,2,3或者1.5,2.5,3.5等,NaN是一个特殊的数字类型,表示非数字。
2、布尔值类型Boolean
只有两个,false和true,但是JS里有很多隐式转化,可以将其他类型的数据转化为布尔值,这个咱们后面再详细展示。
3、字符串类型String
字符串类型的字面量为''。包含在引号里的,一般情况,都为字符串类型,比如'2','true','NaN','你好','abcdefg',这些,因为都包含在引号内,所以它们分别代表字符串2、字符串true、字符串NaN、字符串你好、字符串abcdefg。
4、未定义数据类型Undefined
这个独特的数据类型,与Javascript的底层机制有关,Javascript不像其他后端语言一样,在定义变量时必须给出数据类型,所以Javascript里变量的数据类型是在赋值后决定的,变量的数据类型不跟变量走,而是跟着变量储存的值走,所以你可以声明一个变量,里面存放数字1,那么这个时候,这个变量就是数字型,后面你再重新给这个变量赋值成字符串abc,那么此时,这个变量的数据类型就是字符串类型了。同时Javascript还允许单独声明变量不对变量进行初始化,后续使用时再赋值。这两个特性造就了Javascript数据的一个特殊的状态,就是声明了未赋值的状态,一个只声明未赋值的变量的数据类型就是Undefined,如图:
还有Javascript里的函数,默认会有一个返回值,就是函数return后面的值,return的作用就是将后面的值赋给函数调用者,如果函数没有return,那么函数调用者里就没有存放内容,此时打印函数调用者也会显示Undefined,如图:
如果加入return,那么函数调用者就存入了数据,此时就会显示存入的数据类型
5、空类型Null
这种情况较为少见,这里展示一下,可以声明一个变量赋值为空
二、复杂数据类型
复杂数据类型也叫引用数据类型。顾名思义,引用,就是数据存放在其他位置,通过变量引用过来使用的数据类型。就是Javascript里堆栈的区别,简单数据类型的变量,在堆里存放着值还有变量本身,找到这个变量,就是找到了这个值。而复杂数据类型,在赋值时,内存就自动开辟了两个空间,一个堆,一个栈,堆里存放着变量本身和一个地址,这个地址就指向另一个空间,这个被指向的空间,就是栈,栈存放了复杂数据类型的本体。复杂数据共有以下几种类型:
1、数组[]
数组的括号内可以存放任意数据类型,但是每个数据之间需以‘,’隔开,如:
let arr=[1,'你好','qwer']
2、对象{}
对象的大括号里,同样可以存放很多数据类型,但也需要遵守对象的格式,即:
let arr={key:value,key1:value1,}
3函数(方法)function
function fun(a){
return a
}
以上,就是Javascript里所有的数据类型啦。