小张和js函数参数默认值

函数参数默认值

先来个例子

  • 允许为函数的参数设置默认值,即直接定义在参数的后面
function fun(x="hello"){
	console.log(x);
}
fun();//hello
fun("hi");//hi
  • 参数变量是默认声明的,所以不能用letconst再次声明
function fun(x=0){
	let x=1;//报错
	const x=1;//报错
}
  • 使用参数默认值时,不能有同名参数
function fun1(x,x,y){//不会报错
	...
}
function fun2(x,x,y=0){//会报错
	...
}

  • 参数默认值可以和解构赋值的默认值,结合起来使用
function fun({x=0,y}){
	console.log(x,y);
}
fun({});//0,undefined
fun({y:1});//0,1
fun({x:2,y:1});//2,1
fun();//报错

如何能让fun()不报错呢

function fun({x=0,y}={}){
	console.log(x,y);
}
fun();//0,undefined
  • 如果非尾部的参数设置默认值,实际上这个参数是没法省略的
function f(x=1,y){
	return [x,y];
}
f();//[1,undefined]
f(2);//[2,undefined]
f(,1);//报错
f(undefined,1);//[1,1]

//传入undefined,触发该参数等于默认值,null没有这个效果
  • 制定了默认值后,函数的length属性,将返回没有指定默认值的参数个数,也就是指定了默认值后,length属性失效
(function (a){}).length  //1
(function (a=1){]).length //0
(function (a,b,c=5){}).length//2
  • 如果默认值的参数不是为参数,那么length属性也不再计入后面的参数了
(function (a=0,b,c){}).length   //0
(function (a,b=1,c){}).length   //1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值