+
10
-

js中箭头函数与普通函数有什么区别?

请问js中箭头函数与普通函数有什么区别?

高手回复

+
0
-

普通函数格式: function add(a,b){return a+b};

箭头函数格式:add =(a,b)=>a+b;或add=(a,b)=>{return a+b;}

这里就不详细说明箭头函数的简写规则,2者区别主要分为以下几个方面:

1.this方面:

普通函数内部的this,默认指向window,严格模式下指向undefined;

箭头函数内部的this,与上一级作用域中的this指向同一个地方。

具体示例代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">

<script type="text/javascript">

var person = {
name: "小明",
age: 2,
sayname: function() {
setTimeout(function() {
console.log(this)}, 500);
}
}
var person2 = {
name: "小张",
age: 4,
sayname: function() {
setTimeout(()=> {
console.log(this)}, 500);
}
}

person.sayname();
person2.sayname();
</script>

</html>


2.arguments方面:

普通函数,可以通过arguments来实现重载;

箭头函数中,没有arguments,代替它功能是剩余参数rest(...)。

示例代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">

<script type="text/javascript">

function add(...values) {
let sum = 0;
for (var val of values) {
sum += val;
}
return sum;
}
alert(add(2, 5, 3)) // 10
</script>

</html>


3.原型对象方面:

普通函数,是有自己的原型对象的;

箭头函数,没有原型对象。

4.new方面:

普通函数,可以作为构造函数,通过new实例化出子函数;

箭头函数,不能作为构造函数,使用new会报错。

by ppzhuzhu
我知道答案,我要回答