JS的数据类型

文章类型:Javascript

发布者:admin

发布时间:2022-08-15

js中数据类型分两类 一个是基础类型,一个是引用类型

一:基础类型

其中包括 Number、String、Boolean、BigInt、Symbol、Null、Undefined

var str2 = "world";
var num2=520;
var x=true;
var a=null;
var b=undefined

js数组类型精度是有限的

console.log(0.1+0.2) //0.30000000000000004

console.log(parseFloat((0.1+0.2).toFixed(10))) //0.3

es6新推出的BigInt和Symbol 数据类型

BigInt类型主要是解决普通数据类型范围报错的问题,数据范围涵盖非常大,使用方式就是直接在数字后面加n,注意不能于Number类型共用

let sum=BigInt(9445455547887754564545877887787896567887n)+BigInt(944545556455644645665546456478878545567887n)
console.log(sum.toString()) //953991012003532400230092334366666442135774

Symbol 的本质是表示一个唯一标识。每次创建一个Symbol,它所代表的值都不可能重复

主要用于创建唯一值场景,和对象的key有区别,可以同名,但是实际是唯一的,而对象的key不能同名,如果同名则后面会替换前面的

const name=Symbol('name')
const name1=Symbol('name')
const persons = {
  [name]: '张三',
   [name1]: '李四'
}
const personsobj={
name:'张三',
name:'李四'
}
console.log(personsobj) //name: '李四'}
console.log(Object.getOwnPropertySymbols(persons))//[Symbol(name), Symbol(name)]
console.log(persons) //{Symbol(name): '张三', Symbol(name): '李四'}
console.log(persons[name]) //张三
console.log(persons[name1]) //李四

基本类型存储是直接存储在栈中,占用空间少

二:引用类型

也叫复杂类型Object,像普通对象、数组、正则、日期、Math、函数都属于

引用类型是存储在堆中,占据空间大,在栈中存储了该指针,指针则指向该实体的起始地址,

当需要寻找引用值时,则检索栈中地址,取到栈中地址后再从堆中拿到实体