https://blog.csdn.net/WJ930708/article/details/79904277
https://blog.csdn.net/u011135887/article/details/79199798
1. JavaScript中基本数据类型与引用数据类型
JavaScript 中共有 6 种基本数据类型:Undefined、Null、Boolean、Number、String、Symbol (new in ES 6)
- 基本数据类型的值是按值访问的,引用类型的值是按引用访问的.
- 基本类型的比较是它们的值的比较,引用类型的比较是引用的比较.
- == : 只进行值的比较,=== : 不仅进行值得比较,还要进行数据类型的比较.
- 基本类型的变量是存放在栈内存(Stack)里的,引用类型的值是保存在堆内存(Heap)中的对象(Object)
2. let,const
let+const块级作用域,有了块级作用域,通常不存在变量提升现象。const定义常量值,不能够重新赋值,如果值是一个对象,可以改变对象里边的属性值。关于let的几个知识点:
- let声明的变量具有块级作用域
- let声明的变量不能通过window.变量名进行访问
- 形如for(let x..)的循环是每次迭代都为x创建新的绑定
3. Promise的理解与使用
promise对象有两个特点:(1)对象的状态不受外界外界影响;(2)一旦状态改变,就不会再改变,任何时候都可以得到这个结果。
- promise对象代表一个异步操作,有三种状态;pending(进行中),fulfilled(已成功)和rejected(已失败)
- 只有异步操作的结果,可以决定当前是哪一种状态promise的状态改变,只有两种可能:从pending变为fulfilled和从pending变成rejected.只要这两种状态情况发生,状态就凝固了,不会再变了,会一直保持这个结果,这时就称为resolved(已定型).
- 基本用法
new Promise( function(resolve, reject) { ... } )
promise接受一个函数作为参数,该函数的两个参数分别是resolve和reject.它们是两个函数,由JavaScript引擎提供,不用自己部署.
then方法 。Promise实例具有then方法,也就是说,then方法是定义在原型对象Promise.prototype上的,它的作用是是为Promise实例添加状态改变时的回调函数.then方法的第一个参数是resolved状态的回调函数,第二个参数(可选)是rejected状态的回调函数.并且then方法返回的是一个新的Promise实例。
4.模板字符串
在以往的时候我们在连接字符串和变量的时候需要使用+来实现字符串的拼接,但是有了模版语言后我们可以使用`string${varible}string`这种进行连接。这里需要注意的两个知识点:
${字符串变量} 和 反引号
5.module体系
历史上js是没有module体系,无法将一个大程序拆分成一些小的程序。ES6中module体系通过import和export实现。
6.Class的用法
Class语法相对原型、构造函数、继承更接近传统语法,它的写法能够让对象原型的写法更加清晰、面向对象编程的语法更加通俗。contructor内部定义的方法和属性是实例对象自己的,不能通过extends 进行继承。在ES6中,子类的构造函数必须含有super()函数,super表示的是调用父类的构造函数,虽然是父类的构造函数,但是this指向的却是Cat。
7.Set数据结构
Set本身是一个构造函数,类似于数组,符合数学上集合的概念,即元素没有重复。可以使用Set方便的实现数组去重复。
8.箭头函数
(1)特点
- 不需要function关键字来创建函数
- 省略return关键字
- 继承当前上下文的 this 关键字
- 当箭头函数有且仅有一个参数的时候,可以省略掉括号
(2)注意事项
- 在使用=>定义函数的时候,this的指向是定义时所在的对象,而不是使用时所在的对象
- 不能够用作构造函数,这就是说,不能够使用new命令,否则就会抛出一个错误
- 不能够使用arguments对象
- 不能使用yield命令
9.扩展的对象功能
- 对象初始化简写,当对象属性的名字和赋值的变量相等,可以只写一个。
- 为对象添加方法可以省略function关键字,只使用()即可
10.闭包的概述,举例说明
要理解闭包,首先要理解变量作用域。变量的的作用域无非就是两种:全局变量和局部变量。JavaScript的特殊之处就在于函数内部可以直接读取全局变量;另一方面,在函数外部自然无法读取函数内的局部变量。处于种种原因,我们有时候需要得到函数内的局部变量,但是正常情况下,这是办不到的,只有通过变通方法才能实现。在函数内部,再定义一个函数:由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成”定义在一个函数内部的函数”。所以本质上,闭包就是将函数内部和函数外部连接起来一座桥梁。下图中的f2就是一个闭包函数。
?11.this对象不理解