<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>箭头函数</title> </head> <body> <!-- <script type="text/javascript"> //ES5中 function f(a){ return a; } console.log( f(100) ); //ES6 箭头函数 //1.具有一个参数并直接返回的函数 var f1 = a => a; console.log(typeof f1); console.log( f1(200) ); //2.没有参数的需要用在箭头前加上小括号 // function f2(){return ‘来了老弟‘;} var f2 = () => ‘来了老弟‘; console.log( f2() ); //3.多个参数需要用到小括号,参数间逗号间隔 var f3 = (a, b) => a+b; console.log(f3(3,4));//7 //4.函数体多条语句需要用到大括号 var f4 = (a, b) => { console.log(‘来了老弟‘); return a+b; } console.log(f4(5,6));//11 //5.返回对象时需要用小括号包起来,因为大括号被占用解释为代码块 var f5 = () => { return ({"name":"老弟", "age":40}); } // var f5 = () => ({"name":"老弟", "age":40}); console.log(f5()); </script> --> <input type="button" value="点击" id="btn"> <script> // 6.使用箭头函数作为事件处理函数 // document.getElementById(‘btn‘).onclick = function(evt){ // console.log(evt);//evt 事件对象 // } document.getElementById(‘btn‘).onclick = evt=>{ console.log(evt);//evt 事件对象 } </script> <script type="text/javascript"> //7.赋值为对象的方法 var obj = {}; // obj.say = () => {return "hello,我是obj的say方法";} obj.say = () => "hello,我是obj的say方法"; console.log(obj.say()); //8.回调函数 /* function f1(){ console.log(200); } function f2(f){ //f 其实就是f1 f(); } f2(f1); //f1就是被当做回调函数*/ //先定义f6函数,函数内部 调用f var f6 = (f)=>{ console.log( f(100) ); }; //定义回调函数f7 // var f7 = a=>a; //调用f6 将f7作为参数 f6(f7); // f6(a=>a); </script> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>箭头函数注意点</title> </head> <body> <script type="text/javascript"> //1.typeof 判断箭头函数 结果为function // var f1 = a=>a; // console.log(typeof f1);//‘function‘ //2.instanceof 判断结果为true 箭头函数也是Function构造函数的实例 // var f1 = a=>a; // console.log(f1 instanceof Function);//true //3.箭头函数中的this指向 箭头函数 不改变this指向(不绑定this) //对象方法中嵌套函数时,this指向 /*var obj = { say:function(){ console.log(this);//this就是obj } }; obj.say();*/ /*var obj = { say:function(){ console.log(this);//this就是obj //非箭头函数 var f1 = function(){ console.log(this);//window }; f1(); } }; obj.say();*/ // var obj = { // say:function(){ // console.log(this);//this就是obj // //非箭头函数 // var _this = this; // var f1 = function(){ // console.log(_this);//obj // console.log(this);//window // }; // f1(); // } // }; // obj.say(); //箭头函数 不改变this指向(不绑定this) /* var obj = { say:function(){ console.log(this);//this就是obj //箭头函数 var f2 = ()=>{ console.log(this); }; f2(); } }; obj.say();*/ // 4.箭头函数不能做构造函数,不能用new实例化,也没有prototype属性 // var Person = ()=>{}; // console.log(Person.prototype);//undefined // var p = new Person();//报错 // 5.箭头函数内部没有arguments // var f1 = ()=>{ // console.log(arguments); // }; // f1(); //报错 // // 6.箭头函数也支持默认参数、剩余参数、解构 var f1 = (x=1,y)=>{ console.log(x, y); //3 4 }; f1(); f1(3,4); var f2 = (...x)=>{ console.log(x); //[3,4] }; f2(3,4); var f3 = ([x,y]=[])=>{ console.log(x, y); //3 4 }; f3([3,4]); </script> </body> </html>