ES6学习笔记(二)——函数的扩展

这篇博客介绍了ES6中函数的扩展特性,包括参数默认值的设置及其与解构赋值的结合,强调了默认参数的位置与length属性的变化。此外,讲解了rest参数的使用,函数的严格模式,name属性,以及箭头函数的特性和应用场景,特别指出箭头函数的this指向和不能作为构造函数等问题。
摘要由CSDN通过智能技术生成

预备知识


ES6函数的扩展

1.函数参数的默认值

ES6之前不能直接对函数的参数指定默认值。对参数y赋值:

y = y || expression

但是如果expression的结果为false,该赋值不起作用。为了避免这个问题,可以先判断参数y是否赋值了

if (typeof y === 'undefined') {
  y = 'World';
}

ES6允许直接在参数定义时,给参数赋默认值

function fun(x, y = 'hello'){
   
...
}

[Note]

  • 参数变量是默认声明的,所以不能用let或const再次声明。
  • 使用参数默认值时,函数不能有同名参数。
  • 参数默认值不是传值的,而是每次都重新计算默认值表达式的值。也就是说,参数默认值是惰性求值的。
function foo(x = 5) {
   
  let x = 1; // error
  const x = 2; // error
}

// 不报错
function foo(x, x, y) {
   
  // ...
}

// 报错
function foo(x, x, y = 1) {
   
  // ...
}
// SyntaxError: Duplicate parameter name not allowed in this context

let x = 99;
function foo(p = x + 1) {
   
  console.log(p);
}

foo() // 100

x = 100;
foo() // 101

与解构赋值默认值结合使用(待补充)

默认参数的位置

一般有默认值的参数放在参数中的尾部。如果不在尾部,要传入该参数的默认值,需要在此位置显示传入undefined

function f(x, y = 5, z) {
   
  return [x, y, z];
}

f() // [undefined, 5, undefined]
f(1) // [1, 5, undefined]
f(1, ,2) // 报错
f(1, undefined, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值