企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 箭头函数 写法:函数名=(形参)=>{……} 当函数体中只有一个表达式时,{}和return可以省略,当函数体中形参只有一个时,()可以省略。 * 箭头函数相当于匿名函数,并且简化了函数定义,并且没有自己的`this`、`arguments`、`super`或者`new.target` * 箭头函数更适合用于那些本来需要匿名函数的地方,并且不能用作构造函数 特点:箭头函数中的this始终**指向箭头函数定义时的离this最近的一个函数**,如果没有最近的函数就指向window。 ```javascript var people = name => 'hello' + name; var getFullName = (firstName, lastName) => { var fullName = firstName + lastName; return fullName; } ``` 箭头函数缺点: 1,**`this`对象的指向是可变的,但在箭头函数中,`this`是固定的,不可变的** 2、不能够用作构造函数,这就是说,不能够使用new命令,否则就会抛出一个错误; 3、不能够使用arguments对象;该对象在函数体内不存在(可用`rest`参数代替) 4、不能使用yield命令;因此箭头函数不能用作`Generator`函数 箭头函数没有prototype属性: ```javascript var Foo = () => {}; console.log(Foo.prototype); // undefined ``` 箭头函数不绑定this 箭头函数中的this指向的是定义时的this,而不是执行时的this。也就是说箭头函数没有自己的this,其内部的this绑定到它的外围作用域。对象内部的箭头函数若有this,则指向对象的外围作用域。 ```javascript window.color = "red"; //let 声明的全局变量不具有全局属性,即不能用window.访问 let color = "green"; let obj = { color: "blue", getColor: () => { return this.color;//this指向window } }; let sayColor = () => { return this.color;//this指向window }; obj.getColor();//red sayColor();//red ``` 箭头函数无法使用 call()或 apply()来改变其运行的作用域。 ```javascript window.color = "red"; let color = "green"; let obj = { color: "blue" }; let sayColor = () => { return this.color; }; sayColor.apply(obj);//red ``` * 箭头函数不能访问`arguments`对象,所以调用第一个`getArgs()`时会抛出错误,我们可以通过`...rest`来存储所有参数,并获取 ~~~ const getArgs = () => arguments getArgs('1','2','3') // ReferenceError: arguments is not defined const getArgs2 = (...rest) => rest getArgs('1','2','3') // ["1", "2", "3"] ~~~