<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>箭头函数</title> </head> <body> <script> // ES6 允许使用「箭头」(=>)定义函数。 //声明一个函数 let fn = function(){ } let fn = (a,b) => { return a + b; } //调用函数 let result = fn(1, 2); console.log(result); //1. this 是静态的. this 始终指向函数声明时所在作用域下的 this 的值 function getName(){ console.log(this.name); } let getName2 = () => { console.log(this.name); } //设置 window 对象的 name 属性 window.name = '尚硅谷'; const school = { name: "ATGUIGU" } //直接调用 getName();//结果是尚硅谷 getName2();//结果是尚硅谷 //call 方法调用,它能够直接替换函数内部的this getName.call(school); //结果是ATGUIGU 因为替换了内部的this,变成school里的name值了。 //结果是尚硅谷 箭头函数里面的this是静态的,一直指向函数声明时所在作用域下的 this 的值,所以this不变 getName2.call(school); //2. 不能作为构造实例化对象 let Person = (name, age) => { this.name = name; this.age = age; } let me = new Person('xiao',30); console.log(me); //报错 //3. 不能使用 arguments 变量 let fn = () => { console.log(arguments); } fn(1,2,3); //4. 箭头函数的简写 //1) 省略小括号, 当形参有且只有一个的时候 let add = n => { return n + n; } console.log(add(9)); //2) 省略花括号, 当代码体只有一条语句的时候, 此时 return 必须省略 // 而且语句的执行结果就是函数的返回值 let pow = n => n * n; console.log(pow(8)); </script> </body> </html>
实践示例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>箭头函数实践</title> <style> div { width: 200px; height: 200px; background: #58a; } </style> </head> <body> <div id="ad"></div> <script> //需求-1 点击 div 2s 后颜色变成『粉色』 //获取元素 let ad = document.getElementById('ad'); //绑定事件 // 原始写法: // ad.addEventListener("click", function(){ // //保存指向ad的this 的值 // let _this = this; // //定时器 // setTimeout(() => { // //修改背景颜色 this // // console.log(this); // // this.style.background = 'pink'; 这样写会报错;此时的this指向的是window; // _this.style.background = 'pink'; // }, 2000); // }); ad.addEventListener("click", function(){ //定时器 setTimeout(() => { //修改背景颜色 this // console.log(this); // _this.style.background = 'pink'; // 因为箭头函数中的this指向的是 this.style.background = 'pink'; }, 2000); }); //需求-2 从数组中返回偶数的元素 const arr = [1,6,9,10,100,25]; //原始写法: // const result = arr.filter(function(item){ // if(item % 2 === 0){ // return true; // }else{ // return false; // } // }); const result = arr.filter(item => item % 2 === 0); console.log(result); // 箭头函数适合与 this 无关的回调. 定时器, 数组的方法回调 // 箭头函数不适合与 this 有关的回调. 事件回调, 对象的方法 </script> </body> </html>
标签:ES6,console,log,name,箭头,let,函数 From: https://www.cnblogs.com/anjingdian/p/16901765.html