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加载图片