一.箭头函数
1.ES6允许使用“箭头”(=>)定义函数,如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分,如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用return语句返回。
函数表达式
// const fn = function(n1, n2) {
// return n1 + n2;
// };
// console.log(fn(3, 5)); //8
箭头函数改写
// const fn = (n1, n2) => n1 + n2;
// console.log(fn(3, 5)); //8
函数表达式
// const fn = function(str) {
// return str;
// };
箭头函数改写
如果箭头函数只有一个参数,省略包含参数的括号。
如果函数体中仅return一条语句,省略return并且省略大括号。
// const fn = str => str;
// console.log(fn(‘hello’));
函数表达式
// const fn = function(n1, n2, n3) {
// let num = n1 + n2 + n3;
// return num;
// };
箭头函数改写
// const fn = (n1, n2, n3) => {
// let num = n1 + n2 + n3;
// return num;
// };
2.箭头函数的特点。
2.1.箭头函数最吸引人的地方是简洁,同时函数体内this对象,来自于父级(外层),而且不会被改变。
// const fn = () => {
// console.log(this);//window
// };
// fn();
2.2.不可以当作构造函数使用,不可以使用arguments对象,箭头函数一定是匿名函数(函数表达式)。
2.3.箭头函数适合于简单的函数应用,箭头函数可以取代回调函数(函数做参数)
// let arr = [‘apple’, ‘banana’, ‘pear’];
// arr.forEach(function(v) {
// console.log(v);
// });
// arr.forEach(v => console.log(v));
// setInterval(function() {
// console.log(1);
// }, 1000);
// setInterval(() => {
// console.log(1);
// }, 1000);
2.4.当箭头函数内部有this的时候,不要在最外层定义箭头函数,因为this会指指向它的外层,即window。应该在箭头函数外部包一层函数,将this控制在可见的范围内;
案例:点击li元素,2s后li里面的内容变成222222222222222222222
// const list = document.querySelectorAll(‘li’);
// for (let i = 0; i < list.length; i++) {
// list[i].onclick = function () {
// // this:当前点击的li元素
// window.setTimeout(() => { //改成箭头函数,this来自于父级,指向当前的li,this无法修改。
// //不改箭头函数this:指向window
// this.innerHTML = ‘222222222222222222222’;
// }, 2000);
// };
// }