在javascript里是不可以用
function a(q=0){..}
这种方式定义参数的默认值的,但是默认值又是一个很有用的东东,它可以设置一些普遍使用的参数来减小使用时候的麻烦。
那么总会有办法解决这种奇葩的问题的。
接下来就是见证奇迹的时刻!
function a(b){
var c=arguments[1]?arguments[1]:"c的默认值";
alert(b);
alert(c);
}
这个时候使用它
a(213,3);//先后跳出提示框:213和3
a(213);//先后跳出提示框:213和"c的默认值"
肿么会这样纸呢?细心的小朋友们应该可以发现这么一个[arguments[1]?arguments[1]:”c的默认值”],而且第一次调用a()的时候输入了两个参数。
原因就是:
首先,js不会因为输入的参数个数和定义时的个数不一样而报错
然后,函数中有一个叫做arguments的数组来保存输入函数的参数
这样就可以知道了,在arguments[1]?arguments[1]:”c的默认值”里,arguments[1]就是输入函数的第二个参数(数组的编号从0开始)(首先在这里假如你知道?:操作符的用法,不知道请先去百度回炉。。)
var c= //c等于
arguments[1]? //第二个参数存在吗?存在的话c等于第二个参数的值
arguments[1]: //第二个参数不存在?
"c的默认值"; //不存在就设置为"c的默认值"
===========2021/11/27 更新============
现在的js已经可以用文章开头的方法定义默认参数了,只要调用函数时没有填该参数或者参数的值为undefined,都会使用定义的默认参数传入。