一、var和let const 对比
1:原始js使用var进行变量的定义只存在两个作用域:全局作用域 局部作用域
Es6新增一个作用域:块级作用域 {}
let声明时会形成一个块级作用域
2:利用var 定义变量 存在变量的默认提升功能,let与const不会
3:利用var定义变量可以重复定义,但是let 和const不可以
4:利用var定义的变量,会自动挂载到window,但是let和const不会
5:let和const 存在暂时性死区问题 使用let定义变量 在声明之前 永远不可用
6: let定义变量 const定义常量(定义必赋值)
二、箭头函数 function对比问题
function
1.function this对象的指向性不明确,随之环境的变化会发生变化
2.function 定义的函数,具有默认的提升
3.function 可以作为构造函数,this会根据new 指向空对象
4.存在arguments集合
箭头函数
1.箭头函数this用于指向生产环境 ,不跟随调用这发生变化
2.不存在函数的提升功能
3.无法作为构造函数
4.不存在arguments,rest参数 代替arguments;
箭头函数的简化写法
1.如果箭头函数内部,只有一个参数,可以省略()
2.如果箭头函数内部,有且只有一行语句,并且该语句为return语句 ,可以省略return以及花括号
编写一个箭头函数 输入一个数字,返回其平方
三、this的指向性
this指向三种
1.由new调用,指向构造函数创建出来的对象
2.在window下调用,window对象
3.对象中调用或者事件过程中调用, 指向调用的对象