Web前端面试准备(JS篇- Part 1)

文章整理了前端开发面试中JavaScript的常见考点,包括数据类型(基本类型与引用类型)、数据类型检测方法、变量声明的区别、undefined与null的差异、上下文与作用域链、闭包的概念与作用,以及ES6的新特性等。同时提到了this的指向问题和call/apply/bind的异同。
摘要由CSDN通过智能技术生成

整理了牛客、CSDN的前端开发八股文面经,结合《JavaScript高级程序设计》的内容 + 前端实战开发经验,回答前端面试中JS相关的考点。共2部分。一起加油!!!

牛客上分享的部分考点

1.JS中的8种数据类型以及区别:

数据类型:基本类型 & 引用类型

基本类型(值类型)-6种:number, boolean, string, undefined, symbol, null

引用类型

  • Object, Function

  • 基本包装(Number, String, Boolean)//构造函数,自定义引用类

  • 内置对象(Math)//typeof 显示 object,因为Math不是构造函数

  • Array数组, Date日期, RegExp正则表达 //构造函数,自定义引用类

区别:存储

栈:存储对象的变量标识符、堆中的储存地址

堆:存储对象

2.JS中的数据类型检测方案

1.typeof

typeof : 显示number/string/boolean/object/function/ undefined这6种结果

优点:可用于区分基本数据类型-number, string, boolean, undefined, null,对number, string, boolean, undefined, null和object, function这6种数据类型的判断都是准确的

缺点:不能用来区分自定义引用类,对所有的引用类型都只显示function和object两种结果

2.instanceof:

用法:实例 instanceof 构造函数名

优点: 可以从原型的角度,来判断某引用是否属于某构造函数,判断一个实例是否属于它的父类型

举例:

[] instance of Array //true,

[] instanceof Object //true

缺点:不能用来判断基本数据类

3.Object.prototype.toString.call()

优点:可以清楚地显示出数据类型

缺点:用起来比较麻烦

3.var, let和const的区别和常见用法

var: 函数作用域,变量提升,*为全局变量(window)的一个属性

let: 块作用域、for循环常用、变量声明不提升

const: 块作用域,定义常量,不能修改(但能修改对象的内部属性)、变量声明不提升

未被声明的变量会被如何处置?会产生暂时性死区:浏览器在检测到一个未被声明的变量类型时,不会报错,会返回undefined

4.undefined和null的区别:

undefined:表示未被赋值(包括未被初始化的变量,函数的默认返回值,没有被传入实参的形参)

null:表示“空值”

5.上下文、作用域、作用域链

上下文:全局上下文,函数上下文//后台使用“变量对象/活动对象”来表现,用于储存变量和函数

作用域、作用域是什么时候创建的?

最大用途是用来隔离变量

在执行函数的时候创建,函数执行结束应该被销毁,上下文中的变量和函数都会被销毁

作用域链、作用域链是什么时候创建的?

决定当前上下文的代码在访问变量和函数的顺序,即提供标识符解析的作用

当前上下问的代码被执行的时候(调用函数)的时候会创建作用域链,将当前上下文所对应的“变量对象”至于作用域链的最前端;

6.闭包和作用

闭包:建立在函数内部的子函数

作用:延长外部函数变量的生命周期;副作用:内存泄露

7. this指向谁

*时间充裕的情况下,可阅读this在箭头函数和标准函数中的区别:http://t.csdn.cn/AwrOD

8.call/apply/bind的相同点和不同

相同:都是改变函数的this指向,第1个参数都是this要指向的对象

不同:后续参数形式;是否立刻执行,bind是返回新的函数且函数的this指向对应的对象

9.ES6的特性

1.const/let声明变量

2.箭头函数

3.函数默认参数值

4.类-是原型链的语法糖表现形式(用取代工厂函数,详情阅读《红宝书》)

5.对象超类-允许使用super

6.2种新的数据结构:Map, WeakMap

后面part 2更新完会上链接🔗~加油加油~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值