前端JavaScript基本的数据类型

任何一门语言都有其相对应的数据类型,Javascript也不例外,Javascript的数据类型大致可以分为两类:

  • 基本数据类型:其值可为String,Number,null,undefined,Boolean,Symbol(es6新增)
  • 引用数据类型:除了基本数据类型以外的Object(Array,Function,Reg,Object)等
存放位置区别

首先,这两种数据类型存放位置是不一样的,一个存放在栈中,一个存放在堆中。

  • 栈(stack)和堆(heap)。
      栈为自动分配的内存空间,它由系统自动释放;而堆则是动态分配的内存,大小也不一定会自动释放

  • 基本数据类型(存放在栈中)。
      基本数据类型是指存放在栈中的简单数据段,数据大小确定,内存空间大小可以分配,它们是直接按值存放的,所以可以直接按值访问。

  • 引用数据类型(存放在堆内存中的对象,每个空间大小不一样,要根据情况进行特定的配置)
      引用类型是存放在堆内存中的对象,变量其实是保存的在栈内存中的一个指针(保存的是堆内存中的引用地址),这个指针指向堆内存。
      引用类型数据在栈内存中保存的实际上是对象在堆内存中的引用地址。通过这个引用地址可以快速查找到保存中堆内存中的对象。

使用ES6新增语法声明变量数据类型

使用时应该注意es6里面增值特性,不存在变量提升和暂时性死区,不允许重复声明变量和存在块级作用域。

console.log(x) // ReferenceError:x is not defined 
let x = 'hello, world'

上述代码运行会报错,因为使用let声明的变量不存在变量提升,提前使用会报错。

let x = 'hello, world'
console.log(x) // hello, world
{
    console.log(x) // ReferenceError: x is not defined
    let x = 'hello, world'
}

上述代码重复什么x变量没有报错,因为let声明的变量存在块级作用域,这两个声明变量x不在一个区域内。
而声明第二个函数时报错是因为,let声明的函数存在暂时性死区,在变量声明之前,不可使用变量。暂时性死区的本质就是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。

const PI = 3.141
	console.log(PI) // 3.141
{
	const PI
		PI = 3.141
		console.log(PI) 
		// 报错const在声明基本数据类型的时候必须赋值,并且不能修改其值
}
const tom = {}
	tom.color = 'white'
	console.log(tom) // {'color': 'white'}
{
	const tom = {} // object
		tom = 'white' // string
		console.log(tom)
		// 报错
}
//const在声明引用数据类型的时候可以不必初始化该值,但是不能改变其引用数据的类型

在使用const声明变量的时候需要格外的注意这些小细节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值