JavaScript 在我看来一直比较随性的语言,习惯了 Java 的严格语法控制,面对 JS 函数参数的随意,真是有点头大
JS 的函数参数是可有可无,可大可小,反正就是不报错,下面对参数情况进行逐步解析
常规参数
一般而言定义函数的时候可以没有参数或者有几个参数,无参就不说了,来看看有参的
1 | function abs(x){ |
默认参数
默认参数还是比较流行的,看代码
1 | function multiply(a,b=1){// 其中 b 就有默认值 |
Rest 参数
Java 中有可变参数一说,这个跟可变参数差不多
正常用法
1 | function f(a,b,...manyMoreArgs){ |
变态玩法
1 | function f(...[a, b, c]) { |
可多可少参数
对于 JS 函数,传多传少都没限制,之所以 Rest 参数先说,至少这比较好理解,但对于明明在定义的时候需要参数或者不需要参数,都可以不传或者多传,完全无差,就有点看不下去了
1 | function abs(){ |
因为函数内部有个关键字 arguments
,其会接收并存储传入的实参,不管多少,这是一个跟 Array
类似的对象
还有更有趣的
1 | // 其一 |
可以利用 arguments
做可选参数
1 | // foo(a[, b], c) |
解构赋值
所谓解构赋值,就是直接对多个变量同时赋值。如
1 | var [x, y, z] = ['hello', 'JavaScript', 'ES6']; |
用于对象
1 | var person = { |
那么将解构赋值用于函数呢
1 | function f({a,b,c}){ |
结尾没有啥可说的