箭头函数没有自己的this,只会在自己的作用域的上一层继承this,所以箭头函数的this指向在它定义的时候就已经确定了,之后不会改变,使用call、apply、bind等方法也不能改变,因为没有自己的this,所以不能作为构造函数使用
json是一种基于文本的轻量级的数据交换格式,可以被任何的编程语言读取和作为数据格式来传递。
JSON.stringify():在前端向后端发送数据时,可以调用这个函数将数据对象转化为JSON格式的字符串
JSON.parse():当从后端接收到JSON格式的字符串时,可以通过这个方法将其解析为一个js数据结构,以次来进行数据的访问
1、defer属性
2、async属性
3、动态创建DOM
4、使用setTimeout延迟
5、将js脚本放到文档的底部
函数调用:指向全局对象
方法调用:指向这个对象
构造器调用:指向新创建的对象
apply、call和bind:指向这三个方法指定的对象
回调函数方式、promise函数方式、generator的方式、async函数方式
promise是异步编程的一种解决方案,它是一个对象,可以获取异步操作的消息,避免了回调地狱。
promise具有pending(进行中)、resolved(已成功)、rejected(已失败)三种状态,实例状态只能由pending转变为resolved或rejected,状态改变后就不会再变。状态的改变是通过resolve()和rejecte()函数来实现的,使用then方法可以为两个状态的改变注册回调函数
promise.all成功的时候返回的是一个结果数组,失败的时候返回的是最先被reject失败状态的值。
运用场景:当遇到发送多个请求并根据请求顺序获取和使用数据的场景
promise.race([p1,p2,p3])里面那个结果获得的快,就返回那个结果
运用场景:当要做一件事,超过多长时间就不做了
指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况
造成内存泄漏:意外的全局变量、被遗忘的计时器或回调函数、脱离DOM的引用、闭包
JavaScript代码运行时,需要分配内存空间来存储变量和值,当变量不再参与运行时,就需要系统收回被占用的空间,这就是垃圾回收
垃圾回收方式:标记清除、引用计数
减少垃圾回收:清空数组使用将数组长度设置为0;对象尽量不用,不再使用的对象,将其设置为null
浏览器内核分为渲染引擎和JS引擎
渲染引擎:负责取得网页的内容,整理讯息,计算网页的显示方式
JS引擎:解析和执行JavaScript来实现网页的动态效果
IE:trident内核;火狐:gecko内核;Safari:webkit内核;Chrome:Blink;Opera:Blink内核