### 箭頭函數的本質(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);
})
~~~