企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 函数扩展 > 1.函数参数的默认值 2.rest 参数 3.name 属性 4.箭头函数 ### 函数参数的默认值 ~~~ function log(x, y = 'World') { console.log(x, y); } log('Hello') // Hello World log('Hello', 'China') // Hello China log('Hello', '') // Hello ~~~ ### rest 参数 ~~~ function add(...values) { let sum = 0; for (var val of values) { sum += val; } return sum; } add(2, 5, 3) // 10 ~~~ ### name属性 ~~~ function foo() {} foo.name // "foo" ~~~ ### 箭头函数 ~~~ var f = v => v; // 等同于 var f = function (v) { return v; }; var f = () => 5; // 等同于 var f = function () { return 5 }; var sum = (num1, num2) => num1 + num2; // 等同于 var sum = function(num1, num2) { return num1 + num2; }; ~~~ * 函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。 * 不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。 * 不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。 ### 课后习题 1.下面的代码有什么问题,指出并修改 ~~~ function a (...b,c,d) { // code.. } ~~~ ~~~ function a (x=2,x,y) { // code ... } ~~~ 2.下面代码执行后的结果是什么? ~~~ var a = function b () {} console.log(a.name); ~~~ ~~~ var s = [1,2,3,4, ...[5,6,7,8]]; console.log(s); ~~~ ~~~ var s = (x) => x+1; console.log(s(2)); ~~~