箭头函数
基本语法:
ES6允许使用“箭头”(=>)定义函数
普通函数:
<script type="text/javascript"> var f = function(a){ return a; } t = f(1) // console.log(typeof(t)) console.log(t) </script>
箭头函数 等同于上面:
<script type="text/javascript"> // f = 函数名 a = 参数 a = 返回值 var f = a => a t = f(1) console.log(t) </script>
如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分。
无参数:
<script type="text/javascript"> // f = 函数名 () = 无参数 a = 返回值 var f = () => 5; b = f() console.log(b) </script>
// 等同于 var f = function () {
return 5
};
多个参数:
<script type="text/javascript"> // sum = 函数名 (num1,num2)= 多个参数 num1+num2 = 返回值 var sum = (num1,num2) => num1+num2; s = sum(1,2) console.log(s) </script>
// 等同于 var sum = function(num1, num2) { return num1 + num2; }
使用箭头函数注意点:
箭头函数有几个使用注意点。
(1)函数体内的this
对象,就是定义时所在的对象,而不是使用时所在的对象。
正常情况:
<script type="text/javascript"> //自变量方式创建对象 var person = { name:'日天', age:30, fav:function(){ console.log('喜欢gril') } } person.fav(); var person = { name:'日天', age:30, fav:()=>{ console.log('喜欢gril_2') } } person.fav(); </script>
2.this对象 异常现象:第一个坑
<script type="text/javascript"> //自变量方式创建对象 var person = { name:'日天', age:30, fav:function(){ // 普通函数this指的就是当前对象 console.log(this) //普通函数取得是正常的函数对象 console.log(this.name) } } person.fav(); //====================================================================== var person = { name:'日天', age:30, fav:()=>{ // 箭头函数指的是window console.log(this) //我们发现箭头函数的this 取的不是日天 console.log(this.name) } } person.fav(); </script>
使用箭头函数,它表示定义时所在的对象window。
第二个坑
<script type="text/javascript"> //自变量方式创建对象 var person = { name:'日天', age:30, fav:function(){ //arguments 就是你当前传的函数值 console.log(arguments) } } person.fav(1,2,3); //====================================================================== //2.第二个坑 arguments 不能使用 var person = { name:'日天', age:30, fav:()=>{ // 箭头不能取arguments console.log(arguments) } } person.fav(2,3,4); </script>
//总结 // 箭头函数 //function(){} === () =>() //二个坑 //1.this 的指向发生改变,指向了定义对象时的对象 //2.arguments 不能使用