編寫一個求和函式sum,使輸入sum(2)(3)或輸入sum(2,3),輸出結果都為5
阿新 • • 發佈:2018-12-20
昨天的筆試題,做的一塌糊塗,題目考的都很基礎而且很細,手寫程式碼對我來說是硬傷啊。其中有一道是這個,然而看到題目的時候,根本沒有想到arguments;然後現在就惡補一下。
arguments:用在函式內部,表示傳給該函式的所有的實參的集合。
雖然arguments物件並不是一個數組,但是訪問單個引數的方式與訪問陣列元素的方式相同。例如:arguments[0],arguments[1]...arguments[n].
function foo(){ var sum = 0; console.log(arguments);//偽陣列或者類陣列物件 //arguments[0]取到第一個實參值,arguments[arguments.length-1]取到最後一個實參值 //console.log(arguments[0],arguments[1]) //var sum = arguments[0]+arguments[1]+arguments[2]+arguments[3]; for(var i = 0; i < arguments.length; i++){ sum += arguments[i] } document.write(sum); } foo(1,2,3,4,5,55);
迴歸到本題,同一個函式,但是傳的實參個數不同,此時就要考慮arguments了,判斷實參個數,然後求和。
function sum(){ var num = arguments[0]; if(arguments.length == 1){ return function(sec){ console.log(num+sec); } }else{ for(var i = 1; i < arguments.length; i++){ num += arguments[i]; } console.log(num); } } sum(2,3); //5 sum(2)(3); //5
這時就大功告成了