这是博主自己整理的一些前端所需要掌握的知识点,若有错,请评论指出。觉得博主需要补充的也可以留言哦,另外,我记录的有一些比较精简,在你没有学ES6之前,可能有一些看的有点懵哦。
文章目录
1.引用类型和基本类型
js中的数据类型有以下几种:
Number Boolean undefined Object String Null ;(es6:Symbol)(es2020:bigInt)
基本类型:Number Boolean String undefined null
引用类型:Object Function Array(说到底都是Object )
基本类型的数据是存放在栈内存中的,而引用类型的数据是存放在堆内存中的
2.JavaScript中的堆和栈
-
栈(stack): 由操作系统自动分配内存空间,自动释放,存储的是基础变量以及一些对象的引用变量,占据固定大小的空间。
-
堆(heap):由操作系统动态分配的内存,大小不定也不会自动释放,一般由程序员分配释放,也可由垃圾回收机制回收
-
javascript的基本类型就5种:Undefined、Null、Boolean、Number和String,它们都是直接按值存储在栈中的,每种类型的数据占用的内存空间的大小是确定的,并由系统自动分配和自动释放。
-
javascript中其他类型的数据被称为引用类型的数据 : 如对象(Object)、数组(Array)、函数(Function) …,它们是通过拷贝和new出来的,这样的数据存储于堆中。其实,说存储于堆中,也不太准确,因为,引用类型的数据的地址指针是存储于栈中的,当我们想要访问引用类型的值的时候,需要先从栈中获得对象的地址指针,然后,在通过地址指针找到堆中的所需要的数据。参考博客
3.var与let、const的区别
什么是变量提升?
JavaScript 中(es6之前),函数及变量的声明都将被提升到函数的最顶部。
JavaScript 中(es6之前),变量可以在使用后声明,也就是变量可以先使用再声明。
var声明变量存在变量提升,let和const不存在变量提升
当然,提升是提升声明,并不意味着赋值,理解下列代码:
function fn() {
//var a
if (true) {
console.log(a + ' now')
}
else {
var a = 1
console.log(2)
}
}
fn() // a -> undefined
let、const都是块级局部变量
{
let