iT邦幫忙

0

呼叫函式傳送參數的問題(JS)

假設我有一個函式

function item(phone){
	return function(money){
		console.log(phone + money);
	}
}
item(samsung)(100)

可以得到samsung+100

想請問
item(samsung)(100)是呼叫item函式後,依照順序傳送兩個參數進去函式的意思嗎?
不太理解 為什麼 item(samsung)(100) 可以讓 item返回samsung+100

2 個回答

1
tunin
iT邦新手 5 級 ‧ 2021-04-07 16:52:05

item函式回傳的是一個 function,內容是

function(money){
    console.log(phone + money);
}

所以item(samsung)(100)的意思是呼叫item並傳入samsung後,取得回覆的function,之後再直接使用它並傳入100,跟下面的寫法意思是ㄧ樣的。

const fun2 = item(samsung);
fun2(100);

比較需要注意的是,此時這個函式的命名空間中具備phone這個變數,所以可以於function中使用phone。

了解了,謝謝!

0
koro_michael
iT邦新手 4 級 ‧ 2021-04-07 17:00:09

JS是一級函式語言,function可以放到變數中也可以當回傳值

item(samsung) 取得一個匿名 function

之後又立馬呼叫這個匿名 function

原來是兩次呼叫的意思,謝謝!!

我要發表回答

立即登入回答