js数据类型的分类
基本数据类型
- Number
- String
- Boolean
- Undefined
- null
- symbol
复杂数据类型
- Object
- Array
- Function
- Date
- RegExp
- Map
- Set
js数据类型的区别
最主要的区别就是存储的位置不同:
基本数据类型存储在栈中;而复杂数据类型(引用类型)的对象存储于堆中,而栈中仅仅存储堆中值对应的地址,通过栈中的地址可以找到对应的值
在对数据类型的值进行复制时:
简单类型是生成相同的值,两个对象对应不同的地址,更改赋值后的变量时,不会对前一个值产生影响;而复杂类型则是将保存对象的内存地址赋值给另一个变量,也就是两个变量指向堆内存中同一个对象,更改赋值后的变量时,会对复制前的值产生影响
//基本数据类型
let a=123
let b=a
console.log(b);//123
b=234
console.log(b);//234
console.log(a);//123
//复杂数据类型
let c={name:'zhangsan'}
let d=c
console.log(d);
d.name='lisi'
console.log(d);
console.log(c);
数据类型具体分析
Number类型
整数类型格式:
十进制(55),还可以设置八进制(070)、十六进制(0xA)
浮点类型格式:
在数值汇总时包含小数点(1.1)、科学计数法(3.125e7)
特殊数值NaN:
全称为not a number,表示本来要返回数值的操作失败了
Undefined类型
undefined类型只有一个值,就是undefined。当使用var或let声明了变量但没有初始化时,就相当于给变量赋予了undefined值
触发时机:
当一个变量声明了,但没有赋值时,这时这个变量的值为undefined,而当不存在某个变量,直接去打印时,程序会报错
let a
console.log(a) //undefined
console.log(b) //报错
String类型
使用双引号("aaa")、单引号('aaa')或反引号(`aaa`)表示
特点:
字符串是不可变的,一旦创建它们的值就无法改变,想要修改就需要先销毁再创建
let a = "hello"
lang = lang + " world"
Null类型
Null类型只有一个值,即特殊值null。null值表示一个空的对象指针,这也是给typeof传一个null会返回"object"的原因,undefined值是由null值派生而来
console.log(typeof(null)) //object
console.log(null == undefined) //true
应用场景:
只要变量要保存对象,而且当时没有那个对象可保存,就可用null来填充该变量
Boolean类型
Boolean(布尔值)类型有两个值:true和false,通过Boolean可以将其他类型的数据转化成布尔值
转化的具体规则:
(1)非空字符串转化为true,空字符串转化为false
(2)非0数值转化为true,0和NaN转化为false
(3)任意对象转化为true,null转化为false
(4)undefined转化为false
Symbol类型
Symbol (符号)是原始值,具有唯一、不可变的特点。
应用场景:
确保对象属性使用唯一标识符,不会发生属性冲突的危险
let a = Symbol()
let b = Symbol()
console.log(a == b) //false
Object类型
创建object常用方式为对象字面量表示法,属性名可以是字符串或数值
let person = {
name: "zhangsan",
"age": 29,
5: true
}
Array类型
数组是一组有序的数据,数组中每个槽位可以存储任意类型的数据。并且,数组也是动态大小的,会随着数据添加而自动增长
let a = ["1", 2, 3]
a.push(2)
console.log(a)
Function类型
函数实际上是对象,每个函数都是Function类型的实例,Function也有属性和方法,函数存在三种常见的表达方式:
- 函数声明
// 函数声明
function sum (num1, num2) {
return num1 + num2
}
- 函数表达式
let sum = function(num1, num2) {
return num1 + num2
}
- 箭头函数
let sum = (num1, num2) => {
return num1 + num2
}
总结
以上就是我对JavaScript数据类型的理解,希望对刚刚接触js的你有所帮助!