ES6新增语法—函数和参数

开发 前端
箭头函数:将原来函数的function关键字和函数名都删掉,并使用”=>”连接参数列表和函数体。参数只有一个时,省略掉括号。函数体只有一个表达式,花括号也省略。

[[414274]]

 箭头函数

箭头函数:将原来函数的function关键字和函数名都删掉,并使用”=>”连接参数列表和函数体。

箭头函数语法:

(参数1,参数2)=>{

函数体

}

注意点:

  • 当参数有且只有一个,括号可以省略。没有参数或多个参数时,括号不能省略。
  • 如果函数体有且只有一个表达式时,可以省略花括号。

箭头函数使用实例:

  1. window.onload = ()=>{ 
  2.  console.log('网页加载完成'

参数只有一个时,省略掉括号。函数体只有一个表达式,花括号也省略。如:

  1. let arr=[1,2,3,4] 
  2. arr.forEach((item)=> 
  3.  console.log('item',item) 

This指向问题

1、在全局环境下,this始终指向全局对象,无论是否严格模式。

2、普通函数内部的this分严格模式和非严格模式。

  • 严格模式下this为undefined。
  • 非严格模式下,this指向全局对象window。

3、箭头函数的 this 是上下文的this。

箭头函数相当于匿名函数,并且简化了函数定义,但箭头函数和匿名函数有个明显的差异,箭头函数内部的this是词法作用域,上下文的this值作为自己的this值。

  • Call()、apply()、bind()方法对于箭头函数只是传入参数,对它的this毫无影响。
  • 考虑到this是词法层面上的,严格模式中与this相关的规则都将被忽略。

放在setTimeout中的两个箭头函数返回的this举例。

  1. function Person(name,age){ 
  2.  this.name = name
  3.  this.age = age; 
  4.  setTimeout(()=>{ 
  5.   console.log('this',this) //Person {name"倩倩", age: 18} 
  6.  },100) 
  7. let p = new Person('倩倩',18) 
  8. setTimeout(()=>{ 
  9.  console.log("this",this)//Window {window: Window, self: Window, document: document, name"", location: Location, …} 
  10. },1000) 

函数参数的默认值

在ES6之前,不能直接为函数的参数指定默认值,只能采取变通措施。

实例:普通函数给参数设置默认值

  1. function sum(a,b){ 
  2.  a = a | 12; 
  3.  b = b | 5; 
  4.  return a+b 
  5. console.log('相加等于',sum()) 

ES6允许函数参数设置默认值,即直接写在参数定义的后面。如

  1. function sum(a=12,b=5){ 
  2.  return a+b 
  3. console.log('相加等于',sum()) 

ES6默认参数优点:

  • 简洁,适用于参数多的时候,方便设置默认值。
  • 阅读代码的人可以看出哪些参数是可以省略的,不用查看函数体或文档。
  • 有利于代码的优化,即使未来版本拿掉这个参数,以前代码也可以运行,还有参数变量是默认声明的,不能在函数体内部再进行声明。

与结构赋值结合使用

  1. function add({x=1,y=2}={}){ 
  2.  return x+y 
  3. console.log('相加等于',add({x:2})) // 相加等于 4 

ES6函数不定参数和展开运算符

不定参数:

语法:...

类型:数组

作用:指定多个各自独立的参数,通过整合后的数组来访问。

限制:

  • 最多只能声明一个
  • 只能放在参数末尾

实例:简单应用

  1. function show( a, ...args){ 
  2.  console.log('a',a) 
  3.  console.log('args',...args) 
  4. show(1,2,3) 

展开运算符:

语法:...

作用:指定数组或对象,将他们打散后作为各自独立的参数。

实例:使用展开运算符展开数组。

  1. let arr = ['a','b','c'
  2. let arr2 = [] 
  3. arr2.push(...arr) 
  4. console.log('arr2',arr2) 

实例:使用展开运算符展开对象。

  1. let person = { 
  2.  name :'倩倩'
  3.  age:18 
  4. let worker = { 
  5.  ...person, 
  6.  job:"打杂" 
  7. console.log('worker',worker) 

 

责任编辑:姜华 来源: 今日头条
相关推荐

2021-08-16 07:05:58

ES6Promise开发语言

2021-08-18 07:05:57

ES6Asyncawait

2021-07-16 07:26:48

ES6javascript开发语言

2021-08-02 05:51:29

foreachES6数组

2022-01-26 07:18:57

ES6WeakSetMap

2022-06-01 09:06:58

ES6数组函数

2023-05-10 08:21:42

Es6Set

2021-04-25 13:18:51

Wine 6.7LinuxWindows

2017-10-09 18:21:20

JavaScriptES6ES8

2024-06-26 08:18:08

ES6模板字符串

2023-11-23 10:21:11

ECMAScriptJavaScript

2016-08-01 16:26:34

ES6集合

2020-07-01 07:58:20

ES6JavaScript开发

2017-08-31 14:25:34

前端JavascriptES6

2021-06-23 10:32:24

前端ES6代码

2023-03-01 15:39:50

JavaScrip对象属性ES6

2023-05-28 23:49:38

JavaScrip开发

2022-07-26 09:02:15

ES6ES13ECMAScript

2018-07-16 16:10:03

前端JavaScript面向对象

2020-11-16 08:10:04

ES6迭代器JavaScript
点赞
收藏

51CTO技术栈公众号