当前位置: 首页 > 科技观察

ES6新语法-函数与参数

时间:2023-03-12 02:58:55 科技观察

箭头函数箭头函数:删除原函数的函数关键字和函数名,参数列表和函数体之间用“=>”连接。箭头函数语法:(参数1,参数2)=>{函数体}注意:只有一个参数时,括号可以省略。没有参数或有多个参数时,括号不能省略。如果函数体只有一个表达式,大括号可以省略。箭头函数使用示例:window.onload=()=>{console.log('网页加载完成')}只有一个参数时,省略括号。函数体只有一个表达式,花括号也省略了。如:letarr=[1,2,3,4]arr.forEach((item)=>console.log('item',item))这个指向问题1,在全局环境下,this总是指向全局对象,不管是否使用严格模式。2、普通函数里面的this,分为严格模式和非严格模式。这在严格模式下是未定义的。在非严格模式下,this指向全局对象窗口。3.箭头函数的this就是上下文的this。箭头函数等同于匿名函数,简化了函数定义,但是箭头函数和匿名函数有明显的区别。箭头函数里面的this是词法作用域,上下文的this值作为自己的this值。Call()、apply()、bind()方法只是给箭头函数传入参数,对其this没有影响。考虑到这是词法的,严格模式下与此相关的规则将被忽略。setTimeout中的两个箭头函数返回的示例。functionPerson(name,age){this.name=name;this.age=age;setTimeout(()=>{console.log('this',this)//Person{name:"倩倩",age:18}},100)}letp=newPerson('倩倩',18)setTimeout(()=>{console.log("this",this)//Window{window:Window,self:Window,document:document,name:"",location:Location,…}},1000)函数参数的默认值是ES6之前的,不能直接给函数参数指定默认值,只能想变通。例子:普通函数设置参数默认值functionsum(a,b){a=a|12;b=b|5;returna+b}console.log('sum等于',sum())ES6允许函数参数设置默认值,即直接写在参数定义之后。例如functionsum(a=12,b=5){returna+b}console.log('相加等于',sum())ES6默认参数优点:简单,适合参数多,设置默认值方便.阅读代码的人无需查看函数体或文档即可知道哪些参数可以省略。有利于代码优化。即使在以后的版本中去掉这个参数,之前的代码仍然可以运行,而且参数变量是默认声明的,不能在函数体内声明。使用functionadd({x=1,y=2}={}){returnx+y}console.log('加法等于',add({x:2}))//加法等于4ES6组合带结构体赋值的函数不确定参数和扩展运算符不确定参数:语法:...类型:数组功能:指定多个独立的参数,并通过集成数组访问它们。限制:最多只能在参数的末尾声明一个实例:simpleapplicationfunctionshow(a,...args){console.log('a',a)console.log('args',...args)}show(1,2,3)扩展运算符:语法:...功能:指定一个数组或对象,并将它们分解为独立的参数。示例:使用扩展运算符扩展数组。letarr=['a','b','c']letarr2=[]arr2.push(...arr)console.log('arr2',arr2)实例:使用展开运算符展开对象。letperson={name:'倩倩',age:18}letworker={...person,job:"doingchoress"}console.log('worker',worker)