027進(jìn)階函數(shù)-02 函數(shù)的五種聲明方式

第一種:具名函數(shù)

function x(input1, input2){
    return undefined  // 一個函數(shù)必須有一個終止的程序,就是 return,如果你不寫,那么瀏覽器也會幫我們加上。
}

這里的(input1, input2)是2個變量,function是一個關(guān)鍵字,和 var 的作用是一樣的,var 是聲明一個變量,function 是聲明一個函數(shù),那么變量和函數(shù)有什么區(qū)別呢?

1.變量可以包含7種數(shù)據(jù)類型 (Boolean、Null、Undefined、Number、String、Symbol、Object)
2.如果 function x, 那么這個 x 就一定是一個函數(shù),也就是說這是一個特別的變量, x就是這個函數(shù)的名字,我們可以通過consolo.log(x)給輸出出來。 我們原來說過 consolo.log只接受字符串,如果不是字符串,則會自動調(diào)用 x.toString()方法來得到 string

打印出來的東西 和 return 的東西沒有任何關(guān)系,不要認(rèn)為打印出來什么就返回什么!!!

第二種:匿名函數(shù) (沒有名字且將函數(shù)賦值給一個變量)

function (input1, input2){
    return undefined 
}

上述的例子中,如果單獨的去寫一個匿名函數(shù)的話是會報錯的,匿名函數(shù)必須賦值給一個變量才可以。

第三種:具名函數(shù)賦值給一個變量

var x = funciton y(input1, input2){}

那么var x = funciton y(input1, input2){} 和直接聲明一個 funciton y(){} 有什么區(qū)別呢?

第四種:window.Function 函數(shù)對象(程序員一般不會采用此方法)

new Function('第一個參數(shù)', '第二個參數(shù)', 'return x+y')

Function構(gòu)造函數(shù)接受三個參數(shù),除了最后一個參數(shù)是add函數(shù)的“函數(shù)體”,其他參數(shù)都是add函數(shù)的參數(shù)。
你可以傳遞任意數(shù)量的參數(shù)給Function構(gòu)造函數(shù),只有最后一個參數(shù)會被當(dāng)做函數(shù)體,如果只有一個參數(shù),該參數(shù)就是函數(shù)體。

“函數(shù)體”部分用字符串表示,字符串是可以拼接的,拼接的過程中可以加變量

new Function('x', 'y', 'return x+y')

var n = 1
f = new Function('x', 'y', 'return x +' +n+ '+y' ) 
//等同于 f = new Function('x', 'y', 'return x + y +' +n)  
//上面單引號里面的+表示運算+ 外面的+表示拼接,整個拼接之后就是 return 1+2+1
//那么 f(1, 2)的值為 4 

Function構(gòu)造函數(shù)可以不使用new命令,返回結(jié)果完全一樣。總的來說,這種聲明函數(shù)的方式非常不直觀,幾乎無人使用。

第五種:箭頭函數(shù)(比較炫酷的)

注意:箭頭函數(shù)一定是匿名的,這個語法就沒有給我們寫名字的地方。
f = (x, y)=>{return x+y}
//等號右邊的是一個匿名函數(shù)(箭頭函數(shù))


sum = (x, y) => { return x+y }
//★★★★如果花括號內(nèi)只有一句執(zhí)行內(nèi)容
//那么這個花括號和 return可以去掉 ,等同于如下:
sum = (x, y) => x+y
//★★★★★如果參數(shù)只有一個的話,那么圓括號也可以不要,如下:
n2=n =>n*n

總結(jié)一下

function f(x, y){return x+y}
f = function{}
f = function x(){}
f = new Function('x', 'y', 'return x+y')
f = (x, y) => x+y
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。