JS基础面试题

1.js作用域

作用域:变量的合法使用范围
全局作用域:在全局可以使用
函数作用域:只能在函数块中使用
块级作用域(ES6新增):let,const定义的变量有块级作用域{}内部使用

自由变量:
1.一个变量在当前作用域没有定义,但是被使用了
2.向上级作用域,一层一层一次寻找,知到找到为止
3.如果到全局作用域都没找到,则报错:xxx is not define

2. 闭包

闭包:作用域应用的特殊情况,有两种表现:
1.函数作为返回值
2.函数作为参数

闭包:
所有自由变量的查找,是在函数定义的地方,向上级作用域查找
不是在函数执行的地方查找

3. this有几种赋值情况?

this在各个场景中取什么样的值,是在函数执行的时候确定的,不是在定义的时候。
this 的应用场景
1. 作为普通函数被调用,直接返回window
2. 使用 call apply bind 调用(可以改变this,其他直接执行,bind返回一个新的函数执行)
3. 作为对象方法被调用, 指向实例对象
4. class 方法中调用this,this 指向实例对象
5. 箭头函数  上级作用域this的值
6. setTimeout 中的function是本身触发的执行(window.setTimeout),不是zhangsan这个对象触发的,所以setTimeout中的this指向不是zhangsan这个对象,而是 window。
    如果setTimeou中的是箭头函数,那是当前对象




箭头函数this 永远取它上级作用域的this,箭头函数不会改变this的值

重点:this 在各个场景中取什么样的值,是在函数执行的时候确定的,不是在函数定义时确定的。适用于以上五种场景

4. 手写bind?

bind分析:
1. 首先 bind 返回一个函数,函数执行的时候要返回一个结果
2.this 通过数组取出第一项把 this 拿出来,原因是 要把bind() 中的第一项取出来作为 this并从参数数组中踢出去,只留下剩余的参数
3.this 是谁?谁执行返回的是谁

5. 原型链和原型?

JS本身是基于原型继承的语言
题目-知识点-解答
知识点:class和继承、类型判断instanceof、原型和原型链
原型关系:
每个class 都有显式原型 prototype \n

每个实例都有隐式原型 __prototype \n

实例的 __proto__ 指向对应class 的 prototype

6. 手动封装jquery 

7. js同步和异步的区别是什么?

怎么理解同步和异步?

js是单线程,一个时间段内只能干一件事情,在执行时,就容易阻塞,使用异步就是解决单线程阻塞的问题。

aler是同步,会阻塞后面的代码执行

如何理解js单线程?

8. promise加载图片

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值