2020年最新前端面试题(包含ES6+)

这篇博客整理了2020年前端面试的常见问题,涵盖ES6+的新特性,包括引用类型和基本类型、JavaScript中的堆栈原理、var/let/const的区别、严格模式、this关键字、箭头函数、解构赋值、Set和Map、Promise、跨域解决方案等核心概念。适合前端开发者复习和准备面试。
摘要由CSDN通过智能技术生成

这是博主自己整理的一些前端所需要掌握的知识点,若有错,请评论指出。觉得博主需要补充的也可以留言哦,另外,我记录的有一些比较精简,在你没有学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
  • 29
    点赞
  • 166
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值