# 箭頭函式運算式 ## ==箭頭函式與舊式function的差異== * 當我們運用箭頭函式時、最大的差異就在於==this==的作用域使用,箭頭函式中的==this==無法指向自己 ```javascript= <a id="aLink1" href="javascript:;">Click1</a> <a id="aLink2" href="javascript:;">Click2</a> <script> //舊式函式 document.getElementById("aLink1").addEventListener("click", function () { console.log(this); }); //新式函式 document.getElementById("aLink2").addEventListener("click", () => { console.log(this); }); </script> ``` * 舊式函式點擊後this顯示是Dom、新式箭頭this函式為全域 各點擊後 :![](https://i.imgur.com/1WIXuf7.png) <div class="alert alert-success text-center" role="alert"> 那箭頭函式怎麼用甚麼方式指向自己的Dom元素? </div> * 我們可以使用e.target傳送一個參數值來指定 ```javascript= document.getElementById("aLink2").addEventListener("click", (e) => { console.log(e.target); }); ``` log顯示 :![](https://i.imgur.com/aLItWgz.png) ## ==箭頭函式常會遇到的寫法及問題== * 如果透過不是變數指定的方式撰寫是無法改寫的 ```javascript= // 變數指定方式 const add = ()=> { console.log("add"); } // 函式指定方式 function remove() { } ``` <div class="alert alert-success text-center" > 箭頭函式自帶 return 的語法糖寫法 </div> ```javascript= const add = (a,b)=>{ return a + b; } //語法糖寫法 const addTo = (a, b) => a + b; //結果都會是一樣 console.log(addTo(1, 5)); console.log(add(1,5)); ```
{"metaMigratedAt":"2023-06-16T11:27:55.163Z","metaMigratedFrom":"YAML","title":"箭頭函式運算式","breaks":true,"contributors":"[{\"id\":\"c05b36ac-d774-4e45-8fc3-5e50c9be5123\",\"add\":1413,\"del\":9}]"}
Expand menu