{%hackmd BJrTq20hE %}
第 14 屆 iThome 鐵人賽 (2022)
ES6中的函數增加了很多新特性,使JavaScript 中程式設計不容易出錯,而且比以往更加強大。ES6的函數主要帶來了以下擴充:參數的預設值、rest參數、解構參數、擴充(spread)運算子、name屬性、箭頭函數等。
函數宣告
function Point(x=0,y=0){
this.x = x;
this.y = y;
}
var p = new Point();
p // {x:0,y:0}
ES6的寫法有兩個好處:首先,閱讀程式的人可以立即意識到那些參數是可以沈略的,不用檢視函數本體或文件;這將有利於將來程式最佳化,其次,即使未來的版本在對外界面中測底拿掉這個參數,也部會導致以前的程式無法執行。
參數變數是預設宣告的,要記得不能用let或const再次宣告
function foo(x=5){
let x = 1; //error
const x = 2; //error
}
箭頭函數能夠簡化程式並增加可讀性,對於之後很多的套件箭頭函數都是必要的存在。
其基本語法是:
參數 => 資料本體
var f = v =>v;
//相等於
var f = function(a){
return a;
}
f(1); //1
需要注意的是,箭頭函數內部沒有 this、super、argument和new target的參考
var func = () =>{
//箭頭函數裡面沒有this 物件
//此時的this 是外層的this 物件,即Window
console.log(this)
}
func(55) //Window
var func = () =>{
console.log(arguments)
}
func(55); //Error