站外做deal的网站,自己的网站怎么做商城,网站开发+职位描述,济源新站seo关键词排名推广箭头函数是ES6#xff08;ECMAScript 2015#xff09;引入的一种新的函数表达式语法。相比传统函数#xff0c;箭头函数有简洁的语法#xff0c;并且不绑定自己的this、arguments、super或new.target。以下是详细介绍箭头函数的各个方面#xff1a;
基本语法 单参数箭头函…箭头函数是ES6ECMAScript 2015引入的一种新的函数表达式语法。相比传统函数箭头函数有简洁的语法并且不绑定自己的this、arguments、super或new.target。以下是详细介绍箭头函数的各个方面
基本语法 单参数箭头函数 如果箭头函数只有一个参数可以省略参数周围的括号
// 传统函数
let greet function(name) {return Hello, name;
};// 箭头函数
let greet name {return Hello, name;
};多参数箭头函数 如果箭头函数有多个参数需要使用括号将参数括起来
let sum (a, b) {return a b;
};无参数箭头函数 如果箭头函数没有参数仍然需要使用空括号
let sayHello () {return Hello!;
};简写形式 如果箭头函数的函数体只有一条语句并且是返回值则可以省略大括号和return关键字
// 带大括号和return的写法
let square x {return x * x;
};// 简写形式
let square x x * x;this绑定 箭头函数最显著的特点之一是它不会创建自己的this上下文而是从其外层上下文中继承this。这使得在某些场景下使用箭头函数更为方便尤其是在需要保留外层this的情况下。
传统函数中的this问题
function Person() {this.age 0;setInterval(function growUp() {this.age; // 这里的this指向的是全局对象或undefined取决于是否在严格模式下}, 1000);
}let p new Person();箭头函数中的this绑定
function Person() {this.age 0;setInterval(() {this.age; // 这里的this指向的是Person实例}, 1000);
}let p new Person();其他特性 不绑定arguments对象 箭头函数不绑定arguments对象但可以使用rest参数语法代替
let traditionalFunction function() {console.log(arguments); // 类数组对象包含所有参数
};
traditionalFunction(1, 2, 3); // 输出[1, 2, 3]let arrowFunction (...args) {console.log(args); // 数组包含所有参数
};
arrowFunction(1, 2, 3); // 输出[1, 2, 3]不能作为构造函数 箭头函数不能用作构造函数使用new关键字调用箭头函数会抛出错误
let Foo () {};
let foo new Foo(); // TypeError: Foo is not a constructor没有prototype属性 由于箭头函数不能用作构造函数它们也没有prototype属性
javascript 复制代码
let Foo () {};
console.log(Foo.prototype); // 输出undefined使用场景 简化回调函数箭头函数在编写简短的回调函数时特别有用。
javascript 复制代码
// 传统回调函数
[1, 2, 3].map(function(x) {return x * x;
});// 箭头函数
[1, 2, 3].map(x x * x);保持this的上下文在需要访问外层this的情况下箭头函数非常适合。
function Timer() {this.seconds 0;setInterval(() {this.seconds;console.log(this.seconds);}, 1000);
}
let timer new Timer();简洁的函数表达式当需要简洁的函数表达式时箭头函数提供了更为简便的语法。