合并展开运算符
fun(…数组);
将数组单元的数据展开一一对应赋值给函数的形参
定义在函数的形参位置 合并运算符
function fun(a,b,…arr){ } 以数组的形式存储对应的实参
argument
是函数特有的关键词 , 以伪数组的形式存储所有的实参 , 伪数组不能forEach循环遍历.
解构赋值
一种将数组 / 对象 的数据一一对应赋值给变量的简易语法形式
数组的解构赋值
let [变量1,变量2,变量3…] = 数组;
将数组中的数据解构之后一一对应的赋值给变量 , 一个数组单元对应一个变量 , 一个多维数组对应一个[]
对象的解构赋值
let {键名1, 键名2 , 键名3 …} = 对象
以键名作为变量从对象中获取数据存储在以键名作为变量名称的变量中.
const arr = [100,200,300,400,500,[600,700,800,[900,100]]];
let [a,b,c,d,e,[f,g,h,[i,j]]] = arr ;
const obj = {name:'张三' , age:18 , sex:'男' , addr:'北京' , phone:{ id1:123 ,id2:456 , id3:789 } , email:['1@qq.com','2@qq.com','3@qq.com'] };
let {name:a , age:b , sex:c , addr:d , phone:{ id1:p1 , id2:p2 , id3:p3 } , email:[e1,e2,e3] } = obj ;
立即执行函数
立即执行函数一般都是匿名函数 , 在封装定义函数的同时就调用执行函数.
语法形式:
(匿名函数)( ) ;
!匿名函数( );
~匿名函数( ) ;
立即执行函数后必须要写分号.
箭头函数
ES6新增的一种匿名函数的语法形式 , 箭头函数是一种非常重要的匿名函数的语法形式.
本质作用是为了配合ES6新增的class构造函数定义的 , 为了配合面向对象编程定义的
匿名函数:
function(){ }
箭头函数:
( ) => { }
箭头函数的关键作用:
箭头函数和普通喊程序this指向不同
语法形式1:
( ) => { }
语法形式2:
如果只有一个形参 , 可以不写( )
形参 => { }
语法形式3:
如果只有一行代码 , 可以不写 { }
形参 => 程序代码;
this指向
this是面向对象编程中非常重要的关键词 ,
是函数中特有的关键词 ,
调用执行函数程序时 , JavaScript程序自动设定this关键词的指向.
(this指向的理解
this是JavaScript中函数的关键词 , 本质是一个对象 , 对象中存储内存地址 , 这个内存地址指向堆中的一个独立的存储空间 , 所谓的this指向就是 this这个对象存储的内存地址指向的存储空间 , 也就是简单粗暴的立即this存储的数据数值.
在不同的函数程序中的this指向是不同的 , 也就是不同的函数中this存储的内存地址 和 指向的存储空间是不同的.
)
改变this指向
通过JavaScript提供的函数方法 , 改变普通函数的this指向 , 箭头函数的this指向只能是父级程序的this指向.
箭头函数的this指向是固定的不能改变的 , 箭头函数的this指向是父级程序的this指向 , 如果没有父级程序 或者 父级程序没有this , 那么箭头函数的this指向是window.
语法:
call( )
函数.call( 参数1 , 其他参数 ) ;
参数1 : 设定的函数新的this指向
其他参数: 原始函数需要的实参
apply( )
函数.apply( 参数1 , [其他参数] ) ;
参数1: 设定的函数新的this指向
其他参数: 原始函数需要的实参
bind( )
生成的一个新的函数同时改变函数的this指向 ,
语法:
const 变量 = 函数.bind( 参数1 , 其他参数) ;
参数1: 设定的生成的新函数的this指向.
map数据类型
是ES6新增的数据类型 , 适合复杂项目中的一种数据类型 , 类似于对象结构
创建map数据类型
const 变量 = new Map([[键名: 键值] , [键名:键值] … ]) ;
函数方法:
设定
map对象.set(键名 , 键值)
获取
map对象.get(键名)
删除
map对象.delete(键名)
清空
map对象.clear( )
循环遍历
map对象.forEach( function(参数1 , 参数2 , 参数3){
参数1: map中的键值
参数2: map中的键名
参数3: 原始map
})
set数据类型
ES6新增的数据类型 , 类似于数组的数据类型 , set数据类型不会存储重复的数据
创建set数据类型
const set = new Set(数组) ;
函数方法:
新增
set对象.add()
删除
set对象.delete()
清空
set对象.clear()
判断有没有
set对象.has()
循环遍历
set对象.forEach(function(参数1 , 参数2 , 参数3){
参数1: set类型的数据
参数2: set类型的数据
参数3: 原始set
})