箭头函数和普通函数的区别?
时间: 2023-08-08 21:12:02 浏览: 102
箭头函数和普通函数在语法和功能上有一些区别。
1. 语法:
- 箭头函数使用箭头(`=>`)来定义函数,没有 `function` 关键字。
- 普通函数使用 `function` 关键字来定义函数。
2. this 绑定:
- 箭头函数没有自己的 `this` 值,它会捕获所在上下文的 `this` 值。
- 普通函数的 `this` 值指向调用它的对象或者 undefined(非严格模式下)。
3. arguments 对象:
- 箭头函数没有自己的 `arguments` 对象,可以使用剩余参数语法 `...args` 来获取参数。
- 普通函数有自己的 `arguments` 对象,可以直接使用。
4. 构造函数:
- 箭头函数不能用作构造函数,不能使用 `new` 关键字实例化。
- 普通函数可以用作构造函数,可以使用 `new` 关键字实例化。
5. 返回值:
- 箭头函数的返回值隐式地由箭头后面的表达式决定,没有显式的 `return` 语句时,默认返回该表达式的值。
- 普通函数需要使用 `return` 语句来返回值。
总的来说,箭头函数更简洁并且更适合在不需要自己的 `this` 或 `arguments` 对象的情况下使用,而普通函数则具有更多的灵活性和功能。
相关问题
箭头函数和普通函数的区别?
箭头函数与普通函数的区别主要在以下几个方面:
1. 箭头函数没有自己的 this,它的 this 是继承于上下文中的 this,也就是说箭头函数中的 this 指向的是定义时的 this,而不是执行时的 this。而普通函数的 this 则是在调用时动态绑定的。
2. 箭头函数不能作为构造函数,也就是说不能使用 new 关键字来创建对象。普通函数则可以使用 new 关键字来创建对象。
3. 箭头函数不能使用 arguments 对象访问函数的参数,可以使用 rest 参数代替。普通函数可以使用 arguments 对象访问函数的参数。
4. 箭头函数没有自己的 arguments 对象,也就是说不能通过 arguments 对象访问函数的参数。普通函数则有自己的 arguments 对象,可以通过 arguments 对象访问函数的参数。
5. 箭头函数没有 prototype 属性,也就是说不能使用箭头函数来定义类。普通函数则有 prototype 属性,可以使用普通函数来定义类。
箭头函数和普通函数有什么区别?箭头函数为什么不嫩用作构造函数
箭头函数和普通函数的区别主要体现在以下几个方面:
1. 箭头函数没有自己的this值,它的this值继承自父执行上下文中的this值,而普通函数的this值则由函数被调用的方式来决定。
2. 箭头函数不能使用arguments对象来获取函数的参数,而是使用rest参数(...)来获取函数的参数,普通函数可以使用arguments对象或者rest参数来获取函数的参数。
3. 箭头函数不能作为构造函数使用,因为它没有自己的this值,而构造函数需要使用this来指向新创建的对象。
为什么箭头函数不能用作构造函数呢?因为箭头函数没有自己的this值,使用new操作符调用箭头函数时,它的this值会指向全局对象或者父执行上下文中的this值,这样就无法正常地创建新的对象,因此箭头函数不能用作构造函数。
阅读全文