ES6 函数扩展(箭头函数等)

函数扩展(箭头函数等)

1、函数参数的默认值

(1)与解构赋值默认值结合使用
(2)参数默认值的位置(应该是尾参数)
(3)函数的length属性(返回没有指定默认值的参数个数)
(4)作用域(若设置了参数默认值,参数会形成一个单独的作用域

2 、rest参数

(1)…变量名
(2)函数的length属性,不包括 rest 参数

3、严格模式

函数内部可以设定为严格模式 ‘use strict’(使用默认值、解构赋值、或者扩展运算符情况除外)

4、name属性

(1)函数的name属性,返回该函数的函数名(注意匿名函数中ES5与ES6返回值的不同)
(2)Function构造函数返回的函数实例,name属性的值为anonymous
(3)bind返回的函数,name属性值会加上bound前缀

5、箭头函数

(1)如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分

var sum = (num1, num2) => num1 + num2;
// 等同于
var sum = function(num1, num2) {
  return num1 + num2;
  };

(2)如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用return语句返回。

var sum = (num1, num2) => { return num1 + num2; }

(3)如果箭头函数直接返回一个对象,必须在对象外面加上括号,否则会报错。

let getTempItem = id => ({ id: id, name: "Temp" });

(4)箭头函数可以与变量解构结合使用。

const full = ({ first, last }) => first + ' ' + last;
// 等同于
function full(person) {
  return person.first + ' ' + person.last;
  }

注意:
(1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象
(2)除了this,以下三个变量在箭头函数之中也是不存在的,指向外层函数的对应变量:arguments、super、new.target
(3)由于箭头函数没有自己的this,所以当然也就不能用call()、apply()、bind()这些方法去改变this的指向
不适用场合:
(1)定义对象的方法,且该方法内部包括this
(2)需要动态this的时候,也不应使用箭头函数

6、尾调用优化

(1)尾调用:指某个函数的最后一步是调用另一个函数
(2)尾调用优化:如果所有函数都是尾调用,那么完全可以做到每次执行时,调用帧只有一项,这将大大节省内存
(3)注意:只有不再用到外层函数的内部变量,内层函数的调用帧才会取代外层函数的调用帧,否则就无法进行“尾调用优化”。目前只有 Safari 浏览器支持尾调用优化,Chrome 和 Firefox 都不支持。
(4)尾递归:函数调用自身,称为递归。如果尾调用自身,就称为尾递归
(5)柯里化(currying):函数式编程中的概念,意思是将多参数的函数转换成单参数的形式
(6)严格模式:ES6 的尾调用优化只在严格模式下开启,正常模式是无效的
(7)尾递归优化的实现

7、函数参数的尾逗号

ES2017 允许函数的最后一个参数有尾逗号

8、 Function.prototype.toString()

ES2019 对函数实例的toString()方法做出了修改
toString()方法返回函数代码本身,以前会省略注释和空格
修改后的toString()方法,明确要求返回一模一样的原始代码

9、 catch命令的参数省略

JavaScript 语言的try…catch结构,以前明确要求catch命令后面必须跟参数,接受try代码块抛出的错误对象。
ES2019 做出了改变,允许catch语句省略参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值