004. ES6之函数的扩展

Wesley13
• 阅读 387

1. 函数参数的默认值

ES6 允许为函数的参数设置默认值,

function log(x, y = 'World') {
  console.log(x, y);
}

log('Hello') // Hello World
log('Hello', 'China') // Hello China
log('Hello', '') // Hello

// 1. 参数变量是默认声明的,所以不能用 let 或 const 再次声明
function foo(x = 5) {
  let x = 1; // error
  const x = 2; // error
}

// 2. 使用默认值时,函数不能有同名参数

// 3. 参数默认值不是传值的,而是每次都重新计算默认值表达式的值
let x = 99;
function foo(p = x + 1) {
  console.log(p);
}
foo() // 100
x = 100;
foo() // 101

2. 与结构赋值默认值结合使用

function foo({x, y = 5}) {
  console.log(x, y);
}
foo({}) // undefined 5
foo({x: 1}) // 1 5
foo({x: 1, y: 2}) // 1 2
foo() // TypeError: Cannot read property 'x' of undefined

// 提供函数默认值
function foo({x, y = 5} = {}) {
  console.log(x, y);
}
foo() // undefined 5

3. 参数默认值的位置

// 例一
function f(x = 1, y) {
  return [x, y];
}

f() // [1, undefined]
f(2) // [2, undefined])
f(, 1) // 报错
f(undefined, 1) // [1, 1]

// 例二
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, 2) // [1, 5, 2]

如果传入 undefined ,将触发该参数等于默认值, null 则没有这个效果

function foo(x = 5, y = 6) {
  console.log(x, y);
}

foo(undefined, null)
// 5 null

4. 函数的 length 属性 是指没有指定默认值的参数个数

5. name 属性

6. 箭头函数

7. 双冒号运算符

点赞
收藏
评论区
推荐文章
刚刚好 刚刚好
5个月前
css问题
1、在IOS中图片不显示(给图片加了圆角或者img没有父级)<div<imgsrc""/</divdiv{width:20px;height:20px;borderradius:20px;overflow:h
晴空闲云 晴空闲云
5个月前
css中box-sizing解放盒子实际宽高计算
我们知道传统的盒子模型,如果增加内边距padding和边框border,那么会撑大整个盒子,造成盒子的宽度不好计算,在实务中特别不方便。boxsizing可以设置盒模型的方式,可以很好的设置固定宽高的盒模型。盒子宽高计算假如我们设置如下盒子:宽度和高度均为200px,那么这会这个盒子实际的宽高就都是200px。但是当我们设置这个盒子的边框和内间距的时候,那
艾木酱 艾木酱
5个月前
快速入门|使用MemFire Cloud构建React Native应用程序
MemFireCloud是一款提供云数据库,用户可以创建云数据库,并对数据库进行管理,还可以对数据库进行备份操作。它还提供后端即服务,用户可以在1分钟内新建一个应用,使用自动生成的API和SDK,访问云数据库、对象存储、用户认证与授权等功能,可专
Wesley13 Wesley13
1年前
MySQL ROUND函数:四舍五入
MySQL(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fc.biancheng.net%2Fmysql%2F) ROUND(x)函数返回最接近于参数x的整数;ROUND(x,y)函数对参数x进行四舍五入的操作,返回值保留小数点后面指定的y位。【实例1】使用ROUN
Wesley13 Wesley13
1年前
ES6 参数默认值引起的中间作用域
ES6参数默认值的问题,其实之前在另一篇文章中已经有涉及,之所以再谈起这个问题,是在阅读《ES6标准入门》时产生的一个疑惑。阮老师的代码是:varx1;functionfoo(x,yfunction(){x2;}){varx3;y();console.log(x);}foo();
Stella981 Stella981
1年前
Javascript 变量 var与不var的区别
1.在函数作用域内加var定义的变量是局部变量,不加var定义的就成了全局变量。使用var定义var a  'hello World';function bb(){    var a  'hello Bill';    console.log(a);   }bb()   // 'hello Bill'conso
Wesley13 Wesley13
1年前
12、ES6形参默认值
当定义函数的时候,可以给参数设置默认值。调用的时候不传递参数值,就使用默认值。例子1:普通函数,不传递参数值。默认全是undefined。functionadd(a,b,c){console.log(a,b,c);}add();//不传递参数是,默认参数值全是undef
Stella981 Stella981
1年前
Python3——匿名函数
没有名字的函数,不用写return,返回值就是该表达式的结果。语法:lambda参数:方法(或三元运算)lambdax:xx等同于deff(x):returnxx普通函数defcalc(x,y):ifxy:retur
Stella981 Stella981
1年前
Python技巧之函数拆包裹
函数参数拆包裹有时我们把参数打包传递给函数所以有必要告知函数如何拆包裹defmyfunc(x,y,z):print(x,y,z)元祖向量、字典向量tuple_vec(1,0,1)dict_vec{'x':1,
Wesley13 Wesley13
1年前
MYSQL表分区支持的函数清单
Mysql5.1支持的partition函数1.数学函数ABS(x)    返回x的绝对值CEILING(x)/CEIL(x)返回大于或等于x的最小整数FLOOR(x)    返回小于或等于x的最大整数MOD(x,y)    返回x除以y以后的余数2.日期时间函数EXTRACT(typeFROMd)    从
helloworld_28799839 helloworld_28799839
5个月前
常用知识整理
Javascript判断对象是否为空jsObject.keys(myObject).length0经常使用的三元运算我们经常遇到处理表格列状态字段如status的时候可以用到vue