iT邦幫忙

2021 iThome 鐵人賽

DAY 9
0

一級函數 (First Class Functions)

Everything you can do with other types you can do with functions.
你能對別的型別(比如字串、數值、布林、物件等)做的事情,都可以對函式做。

例如指派函數給一個變數,此外,函數還可以當作參數再傳到另一個函數中。
事實上,JavaScript函數就是一種特殊的物件。

函數(Function)

簡單介紹一下函數,函數就是把要程式碼封裝在一起,如此利於重複使用。

如何宣告?

function 函數名稱(參數1,參數2,....){
你要函數做的事情
}
*如果函數要返回一個值,就用 return 關鍵字
*有的函數不用參數,看你的需求而定
例如這裡有一個返回 "你好!" 的函數,函數名叫greet

function greet() {
    return "你好!";
}

如果要呼叫函數:

函數名稱()

以上面為例:

greet(); 

Scpoe 範圍

我們可以在函數內定義任何變數,但是只有在函數裡面才可以存取
這叫做 local variable(局部變數),相對的就是 global variable(全域變數)

例如:這樣外面存取不到 a函數 內的c

function a(){
		var c=12;
	}
	console.log(c);//Uncaught ReferenceError: c is not defined

函數就是物件

函式是一種特殊的物件,除了有所有物件的特色外,還有自己的屬性。
既然函數是物件,那麼它就會有屬性與方法。

例如,函數可以有一般物件有的屬性:
純值、物件、函數等

此外,函數本身的特殊屬性有:
1.名稱屬性(不一定要有,有的函數是匿名)
2.code(程式)屬性,你在函數裡面寫的程式也是該函數的屬性之一,這個屬性是可以呼叫的,用 ()呼叫,呼叫函數就會執行程式。
可以看這張圖:(取自克服JS奇怪部分)
https://ithelp.ithome.com.tw/upload/images/20210923/20135414QuJvF06OQ7.png

所以要記得: 函數是物件!!

也因為可以對函數做很多事情,比如複製、移動、傳值,所以函數使用彈性非常大。

EX: 因為函數是物件,所以我們可以用.來為函數新增屬性

function hello(){
console.log('hello');
}

hello.lang='eng';
console.log(hello.lang);// eng

上面這個函數
*Name 屬性為 hello
*code 屬性為 console.log('hello');
而一但我們 呼叫函數hello()
執行環境就會被創造,並執行程式

再次提醒,JavaScript 函數是物件,它是一級函數!

參考:
Fooish JavaScript Function (函數)
MDN 函式


上一篇
很像JavaScript 的 JSON
下一篇
Expression 與 Statement
系列文
開始入坑網頁吧!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言