1、出现let const定义变量
那var let const有什么区别呢
1)由于ES5中作用域有局部作用域(函数内部)和全局作用域,ES6新增了块级作用域,即 { }存在的块级作用域,因此ES6中let只能在块级作用域内访问,不能跨越块级作用域或函数作用域访问,const是用于定义常量,其值不可随意更改,也不能跨块级作用域访问,而var可以跨块作用域访问,如下
var在if语句中定义变量a
输出
let在if语句中定义变量b
输出报错,没有发现b
const在if语句中定义常量c
输出报错,没有发现c
如果定义了一个常量,后面代码不能修改他的值
输出报错
2)let const定义的变量和常量不会出现提升
输出报错
用var 声明则不会
上例 尽管输出语句在前,用var定义时也会默认提前,然后执行输出,再赋值,因此输出undefined。
3)var 可以重复定义,let const不能重复定义。
4)var定义的变量默认挂载到window对象上,let和const不会
5)let 和const存在暂时性死区问题,只要在块级作用定义了变量,就只能在后面使用,即便全局有也不能用
输出
则报错。
2、字符串模块
字符串利用反引号,与变量拼接利用${变量},如
let name="小明";
let age=18;
console,log(`${name}有${age}岁了`)
3、数据结构
将复杂结构中内容,解构为简单结构
1)对象
输出
2)数组
输出
利用其特性交换数据
输出
4、对象简化
如果对象中key和值的变量相同,可作如下省略
且对象中function可省略
5、箭头函数
定义箭头函数:
let show=()=>{};
箭头函数和传统function区别
1)传统的function定义函数 this指向性不明确,随之使用环境的变化发生改变,而箭头函数 this指向明确 ,永远指向生产环境。
2)传统function定义 有默认的提升功能,箭头函数没有。
3)传统function 可以作为构造函数,箭头函数不可以。
4)传统function 函数中具有arguments参数集合,箭头函数没有(存在rest参数)。
箭头函数简写功能:
1)如果箭头函数中有且只有一个参数,那么可以省略()
2)如果箭头函数内部有且只有一行语句,并且是return语句的话 可以省略{}和return