欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

小张和js函数参数默认值

程序员文章站 2022-03-27 13:09:44
...

函数参数默认值

先来个例子

  • 允许为函数的参数设置默认值,即直接定义在参数的后面
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
相关标签: # javascript