ES6的语法规范
一、定义变量的关键词
1、let
<1> 特点:
(1)定义的变量名称不能重复
(2)定义的变量会像forEach()循环类似会建立独立的相互之间不影响的
(3)定义在{}和循环中的变量 只能在{}和循环中使用
<2> 使用:
(1)定义基本数据类型
(2)在循环中使用 定义循环变量
2、const
<1> 特点:
(1)定义的变量名称不能重复
(2)定义的数不能被改变
(3)定义在{}和循环中的变量 只能在{}和循环中使用
<2> 使用:
定义引用数据类型 定义常量
3、总结:
let 多用于定义 基本数据类型 以及 循环中
const 多用于定义 引用数据类型
特点:
定义的变量名称不能重复
在 { } 和 循环中定义,只能在 { } 和 循环中使用
let会建立独立的,存储不同的,相互不冲突数据的变量
const定义的变量,不能重复赋值,不能修改存储的数据
二、箭头函数
1、三种形式:
(1)function(){} === ()=>{} 箭头函数
(2) function(e){} === e=>{} 箭头函数
(3) function(){一行代码} === ()=>一行代码 箭头函数
2、特点:
<1> this指向与一般的function函数不同
(1)声明式 function fun(){} this指向是 window
(2)赋值式 var fun = function(){} this指向是 window
(3)forEach()循环 this指向是window
(4)定时器,延时器 setInterval(function(){} , 时间) this指向是window
(5)对象中的函数 const obj = {fun:function(){}} this指向是obj对象
(6)事件处理函数 标签.addEventListener(事件类型,function(){}) this指向是标签对象
<2> 函数的this指向是父级程序的this
如果父级程序有this指向 指向的就是父级程序的this指向
如果父级程序没有this指向 (对象,数组是没有this)指向的是window
<3> 箭头函数 无法改变this指向
三、改变this指向
<1> 函数.call(参数1,其他参数)
(1)立即执行函数,并且改变函数的this指向为参数1表啊hide内容
(2)其他参数是原始函数的实参 多个实参用使用逗号间隔
<2>函数.apply(参数1,[数组参数])
(1)立即执行函数并且改变函数的this指向为参数1表示的内容
(2)数组参数 是原始函数的参数 多个参数以数组的单元的形式存储
<3>函数.bind(参数1)
(1)不会立即执行函数 而是生成一个新的函数 新函数参数 程序内容 都与原始函数相同 只是this改变为参数1表示的内容
四、解构
<1>数组的解构
将数组的数值 一一对应的赋值给变量
let[变量1,变量2,变量3] = [1,2,3];
<2>多维数组的解构
let[变量1,变量2,[变量3,变量4,变量5]] = [1,2,[a,b,c]];
<3>对象的解构
按照定义的属性 从对象中获取数据 赋值给定义的属性 属性就是定义的变量名称
let{属性} = 对象
按照定义的属性 从对象中获取数据 赋值给定义的别名 别名是定义的变量名称
let{属性.别名} = 对象
<4>多维对象解构
let{属性:{属性:别名}} = {属性:{属性:数据}}
五、合并 展开运算符 ...
<1>定义在形参中
function(...arr)
将所有的实参都已数组单元的形式存储在形参中
可以通过操作数组的方法来获取实参
<2>定义在实参中 function(形参1,形参2,形参3){} fun(...数组)
将数组中的数据展开 一一对应的赋值给形参
<3>普通函数 function 中有JavaScript专门定义好的变量 arguments
如果没有定义形参 arguments 会以数组的形式来存储所有的实参
<4>箭头函数中 没有 arguments 变量
要想以数据的形式存储实参必须使用合并运算符