### 箭头函数的本质(this的指向问题)
~~~
<button id="one">按钮</button>
<script>
var one=document.getElementById("one");
var id=100;
one.onclick=function(){
//console.log(this.id);
setTimeout(function(){
console.log(this.id);
},1000)
}
console.log(window.id);
/*全局变量本质上是window的属性,全局方法本质上是window的方法
setTimeout是window的方法
*/
~~~
### 通常函数的定义方法
~~~
var fn = function(...){
......
}
//例如:
var add = function(a,b){
return a+b;
}
//或者:
function fn(...){
......
}
//例如:
function add(a,b){
return a+b;
}
~~~
### 简写方法速记
>##### 将原函数的“function”关键字和函数名都删掉,并使用“=>”连接参数列表和函数体。
~~~
function add(a,b){
return a+b;
}
//简写为:
(a,b)=>{//删掉了function和函数名
return a+b;
}
var add = function(a,b){
return a+b;
}
//简写为:
var add = (a,b)=>{ //删掉了function
return a+b;
}
~~~
箭头函数的语法:
~~~
(parameters) => { statements }
~~~
如果没有参数,那么可以进一步简化:
~~~
() => { statements }
~~~
如果只有一个参数,可以省略括号:
~~~
parameters => { statements }
~~~
如果返回值仅仅只有一个表达式(expression), 还可以省略大括号:
~~~
parameters => expression
// 等价于:
function (parameters){
return expression;
}
~~~
补充:
~~~
function go(test){
var a=10;
test(10)
}
/*回调函数将函数内部的值返回到外部*/
var test=function(res){
console.log(res);
}
go(function(res){
console.log(res);
})
~~~
