${变量名/表达式/有返回值的函数}
箭头函数的内容:
原来的函数function(){}
箭头函数:
1.写法更简单
let aa =()=>
如果只有一行代码 可以不写大括号;
let aa =()=>
如果只有一行代码 可以不写大括号 这行代码的执行结果直接当做返回值
let aa = ()=>{return}
返回值
参数只有一个的话小括号也可也省略
2.this指向 箭头函数是没有this的 , 一旦出现this 就会向上级找 , 找上级的this , 如果找不到就会指向window
而普通的函数只是谁调用就指向谁,重点在调用的地方,没有人调用就指向window
下面举一个例子,在下面的代码块中,打印出来的结果是什么呢?
<script>
var obj = {
value:0,
fn:function(){
var f = function(){
//这个this指向window
console.log(this)
this.value++
}
f();
}
}
obj.fn();
console.log(obj.value);
</script>
打印的结果是0 , 在调用的console.log(obj.value)中根本没有调用到f这个函数,而fn执行的时候函数内的this是指向window的,所以访问不到obj内部的value值 ;
那么如何使value发生我们想要的+1的效果呢?
其实吧f这个函数改变成箭头函数就可以了:
<script>
var obj = {
value:0,
fn: function(){
var f =()=>{
//这个this指向window
console.log(this)
this.value++
}
f();
}
}
obj.fn();
console.log(obj.value);
</script>