var、let、const区别:
var 声明变量 有变量提升 值为undefined 可以定义空变量 可以重复定义 作用域为全局。
let 声明变量 没有变量提升 为块级作用域 存在暂时性死区 在变量定义这一句出现前 使用这个变量会报错 不可重复定义。
const 声明常量 声明及赋值 没有变量提升 存在暂时性死区 不能重复定义 不能重新赋值 为块级作用域。
在let和const之间,建议优先使用const,尤其是在全局环境,不应该设置变量,只应设置常量。
const优于let有几个原因。
一、const可以提醒阅读程序的人,这个变量不应该改变;
二、const比较符合函数式编程思想,运算不改变值,只是新建值,而且这样也有利于将来的分布式运算;
三、JavaScript 编译器会对const进行优化。
所以多使用const,有利于提高程序的运行效率,也就是说let和const的本质区别,其实是编译器内部的处理不同。
箭头函数和普通函数区别:
一、箭头函数没有自己的this,会捕获其所在上下文的this值,作为自己的this值;
二、箭头函数不能用于构造函数、不能new实例化;
三、箭头函数没有arguments;
四、箭头函数的this指向定义的时候就固定了,不会发生改变。