💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
## 一、函数参数默认值 ~~~javascript function log(x, y = 'World') { console.log(x, y); } log('Hello') // Hello World log('Hello', 'China') // Hello China log('Hello', '') // Hello ~~~ ## 二、rest 参数 ES6 引入 rest 参数(形式为`...变量名`),用于获取函数的多余参数,这样就不需要使用`arguments`对象了。rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中。 ~~~javascript function add(...values) { let sum = 0; for (var val of values) { sum += val; } return sum; } add(2, 5, 3) // 10 ~~~ 对比arguments及rest参数: ~~~javascript // arguments变量的写法 function sortNumbers() { return Array.prototype.slice.call(arguments).sort(); } // rest参数的写法 const sortNumbers = (...numbers) => numbers.sort(); ~~~ ## 三、严格模式 从 ES5 开始,函数内部可以设定为严格模式。 ~~~javascript function doSomething(a, b) { 'use strict'; // code } ~~~ ~~~javascript // 报错 function doSomething(a, b = a) { 'use strict'; // code } // 报错 const doSomething = function ({a, b}) { 'use strict'; // code }; // 报错 const doSomething = (...a) => { 'use strict'; // code }; const obj = { // 报错 doSomething({a, b}) { 'use strict'; // code } }; ~~~ ## 四、箭头函数 ES6 允许使用“箭头”(`=>`)定义函数; ~~~javascript var f = v => v; // 等同于 var f = function (v) { return v; }; ~~~ 1、如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分。 ~~~javascript var f = () => 5; // 等同于 var f = function () { return 5 }; var sum = (num1, num2) => num1 + num2; // 等同于 var sum = function(num1, num2) { return num1 + num2; }; ~~~ 2、如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用`return`语句返回。 ~~~javascript var sum = (num1, num2) => { return num1 + num2; } ~~~ >[danger] 注意: > (1)函数体内的`this`对象,就是定义时所在的对象,而不是使用时所在的对象。 > (2)不可以当作构造函数,也就是说,不可以使用`new`命令,否则会抛出一个错误。 > (3)不可以使用`arguments`对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。 > (4)不可以使用`yield`命令,因此箭头函数不能用作 Generator 函数。