💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 1、数据类型 JavaScript 语言的每一个值,都属于某一种数据类型。JavaScript 的数据类型,共有六种。(ES6 又新增了第七种 Symbol 类型的值) * number int float * string * bool * null 空值,如果要设置一个变量的值为null,只能手动赋值为null。null也是一个对象。 * undefined 未定义,如果一个变量声明了,但是没有给值,则这个变量的值就是undefined 。 * object 纯对象(狭义上的对象) 数组 函数 JS中任何数据类型都可以看做是对象 > 通常,我们将数值、字符串、布尔值称为原始类型(primitive type)的值,即它们是最基本的数据类型,不能再细分了。而将对象称为合成类型(complex type)的值或引用类型,因为一个对象往往是多个原始类型的值的合成,可以看作是一个存放各种值的容器。至于undefined和null,一般将它们看成两个特殊值。 > 对象又可以分成三个子类型,即狭义的对象(object)、数组(array)、函数(function),其实,更加广义的讲,原始类型的值(数值、字符串、布尔)也可以看做对象。 # 2、数据类型示例 ``` var a = 123; var b = 3.14; var c = 'hello'; var d = true; var e; var f = null; var g = ['apple', 'banana']; var h = {name:'李四', age:30}; ``` ``` function m(){ } 可以输出查看效果。 ``` # 3、判断数据类型 ![](https://img.kancloud.cn/4a/3d/4a3d4237202d8a6a979ddbf6da265fc2_844x496.png) 使用typeof无法区分null、数组、对象,要想区分他们三个,必须使用instanceof。 使用instanceof的语法: ``` 变量 instanceof 类型 ``` 类型:包括Array、Object * 如果一个变量instanceof Array之后,结果为true,则表示变量是数组类型; * 如果一个变量instanceof Object之后,结果为true,则表示变量是对象类型; ![](https://img.kancloud.cn/01/c1/01c12d8788f009d3c0fe053bd439fa4f_510x101.png) 下面一个函数可以判断数据类型到底是什么? ``` function panduan(x){ if(typeof(x) != 'object') { return typeof(x); } else { if(x instanceof Array) { return 'array'; }else if(x instanceof Object){ return 'object'; }else{ return 'null'; } } } console.log(panduan(h)); ``` # 4、原始类型和引用类型 引用类型指对象,指的是狭义上的对象。数组不应该算引用类型。 区分是否是引用类型,关键看内存图。 对象在内存的栈区只保存它的地址,在堆区保存它的实际内容,这种类型的变量就是引用类型。 ![](https://img.kancloud.cn/31/cf/31cf29fd2fbe3e6564ae9159927b0dd8_635x514.png) 引用类型的一些应用: ![](https://img.kancloud.cn/eb/c7/ebc71bbb8592fafab74c4b521749dcd2_637x541.png)