一、自执行方法 定义一个自执行函数,函数定义完成后,自己执行一次。 语法: (function fun1() {console.log('Hi')})() (在函数加上括号 ) 简写:+ function fun1() {console.log('Hi')}() (函数前面加上“+”) 箭头函数的自执行方式: (()=>{console.log('Hi')})()
二、rest参数/arguments 的区别 1、rest : (1)定义: ...args 就是rest参数 (2) 用法: function fun1 (a,b,c...args) {console.log(a,b,c); console.log(args);} 这里的console.log(args)返回的是除了a,b,c的其他值。因为给fun1赋值时,不一定只用三个参数,也可能传参传大于三个。所以console.log(args)的用处就是返回其他的值;与此同时,返回的是一个数组。 2、arguments: (1) 定义:arguments本身就是函数中的自带对象,而这个对象里面保存这个方法里的所有参数。 (2) 与rest参数的区别:arguments返回的是对象中所有的参数,并且它并不是数组 (3) callee方法:在arguments对象中有一个callee方法,这个方法指向当前方法本身 定义稳定的递归函数: function calc(num){if(num==1){return num} let sum=num+arguments.callee(num-1) return sum}
三、展开运算符 1、展开运算符: ...(三个点符号) 2、作用: (1)可以将一个数组全部展开 let arr3=[...arr1,...arr2] (2)可以展开对象的全部成员 let obj3 = {...obj1} (3)多个对象合并到一个大的对象中 let obj3 = {...obj1...obj2} 注意:在对象合并中,在后面的对象中属性名相同,属性值不同。后面的属性值会将前面的属性值给覆盖
四、解构赋值 1、定义:将数组,对象中的每个元素提取出来 2、方式 (1)在数组中 let arr1 = [11, 22, 33, 44, 55, 66] let [a, b] = arr (这里用[ ]) console.log(a,b) =>返回出来的是 11 12 (2)在对象中 let student={ name:'张三',age:23, sex:'男', car:{carName:'奔驰',carPrice:'100w'}} let sex=student.sex let {name,age,sex:sex2}=student (因为上一行有sex,同名了!所以要写sex:sex2,改一下属性名) console.log(name,age,sex) =>返回的是张三 23 男 let{car:{carName,carPrice}}=student (这里用{ }) console.log(carName,carPrice)=>返回的是 奔驰 100w