摘要:為什么結果是,而不是對于函數來說,實參和形參是一一對應的,即,我們的代碼只要求參數運算,那么結果自然是。為什么不會出錯因為當我們不給函數傳遞這個參數的時候,這個參數為,這時候,為,因為轉換為數值類型之后是。
js中怎么定義一個函數?
// 定義一個函數,求出參數中的最小值 function min(a,b,c,d...) { //函數的代碼 }上面的函數怎么調用?
min(1,2,3,4,5,6,7...);定義一個求兩個數中最小值的函數
function min(a, b) { return a>b? b:a; } 調用 min(1,2);
1 函數的形參是什么?
函數的形參是定義該函數時,你設置的函數參數個數
2 min函數的形參有幾個?
2個,a和b
3 min函數的實參有幾個?
調用函數時傳遞幾個就是有幾個,上面調用時,我們傳遞了 1和2 ,那么實參個數就是兩個
function min(a, b) { return a>b? b:a; } var result=min(1,2,-1,4) console.log(result) //輸出 1
以上代碼說明,我們可以傳遞的參數大于形參個數,且不會出錯。
為什么結果是1,而不是-1?
對于函數來說,實參和形參是一一對應的,即a=1,b=2,我們的代碼只要求a,b參數運算,那么結果自然是1。
答案是,我們的另外兩個參數被放在了函數的arguments中,我們來看看arguments是個什么
function min(a,b) { console.log(arguments); return a>b? b:a; } var result=min(2,6,90,10) console.log(result) //輸出 2
原來我多傳的參數在arguments中。
實參有多少個,只要調用 arguments.length即可,當前有4個
函數的形參個數能不能知道?
當然可以 , 形參個數就是 min.length
arguments看著像是個數組,不過,它可并不是一個數組哦,它是個object類型的,
怎么取到所有的參數,就不言而喻了
for(var i in arguments){ console.log(arguments[i]) }
說了這么半天,這玩意兒有啥用處?
//兩個數字中的最小值 function min(a,b){ return Math.min(a,b); } min(1,2); //四個數字中的最小值 function min(a, b, c, d){ return Math.min(a,b,c,d); } min(1, 2,3,4); //6個數字中的最小值 function min(a, b, c, d,e,f){ return Math.min(a, b, c, d,e, f); } min(1, 2,3,4,5,6); //n個數字中的最小值 function min(a, b, c, d,e,f,...n){ return Math.min(a, b, c, d,e, f,...n); } min(1, 2,3,4,5,6,...n); //隨著我們要比較的數字的增多,我的函數形參數目也越來越多, //有了arguments這個對象,形參數目不就可以不寫了么,像這樣 function min(){ var res=arguments[0] for(var i in arguments){ if(i==0) continue; res=res>arguments[i]?arguments[i]:res; } return res; } min(1, 2,3,4); //代碼更精簡點,還可以這樣 function min(){ return Math.min.apply(this,arguments); } min(1, 2,3,4,-1,2,0-3);//-3那么我們可以少傳么?
function min(a, b) { return a>b? b:a; } var result=min(1) console.log(result) //輸出 1
以上代碼說明,我們可以傳遞的參數小于形參個數,且不會出錯。
為什么不會出錯?因為當我們不給min函數傳遞 b 這個參數的時候,b這個參數為 undefined,這時候,a>undefined 為false,因為b轉換為數值類型之后是 NaN。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/107152.html
摘要:事實上,滿足一定條件的對象都能被方法轉換成數組。繼承于的很大原因是不需要這四個方法。而在非嚴格模式下,兩個會互相影響。數組與類數組對象數組具有一個基本特征索引。這是一般對象所沒有的。是利用對象的鍵值對存取數據,而卻是利用數組的索引。 1. 什么是 arguments MDN 上解釋: arguments 是一個類數組對象。代表傳給一個function的參數列表。 我們先用一個例子直觀了...
摘要:事實上,滿足一定條件的對象都能被方法轉換成數組。繼承于的很大原因是不需要這四個方法。而在非嚴格模式下,兩個會互相影響。數組與類數組對象數組具有一個基本特征索引。這是一般對象所沒有的。是利用對象的鍵值對存取數據,而卻是利用數組的索引。 1. 什么是 arguments MDN?上解釋: arguments 是一個類數組對象。代表傳給一個function的參數列表。 我們先用一個例子直觀了...
摘要:以上簡單總結了下對執行上下文和變量對象的理解,主要在于記錄總結一下學習成果,目前文章的水平實在不敢談分享。 執行上下文(Execution Context) 文章同步到github javaScript中的執行上下文和變量對象 JavaScript代碼執行的過程,包括編譯和執行兩個階段,編譯就是通過詞法分析,構建抽象抽象語法樹,并編譯成機器識別的指令,在JavaScript代碼編譯階段...
摘要:參數引用函數的上下文,函數上下文來自于等面向對象語言,中的依賴于函數聲明。沒有重載函數沒有簽名,因為其參數是由包含零或多個值的數組來表示的。這就是重載函數。重載函數常用來實現功能類似而所處理的數據類型不同的問題。 1 函數參數 函數的實參和形參個數可以不等,之所以會這樣,原因是 ECMAScript 中的參數在內部是用一個數組來表示的。函數接收到的始終都是這個數組,而不關心數組中包含哪...
摘要:參數引用函數的上下文,函數上下文來自于等面向對象語言,中的依賴于函數聲明。沒有重載函數沒有簽名,因為其參數是由包含零或多個值的數組來表示的。這就是重載函數。重載函數常用來實現功能類似而所處理的數據類型不同的問題。 1 函數參數 函數的實參和形參個數可以不等,之所以會這樣,原因是 ECMAScript 中的參數在內部是用一個數組來表示的。函數接收到的始終都是這個數組,而不關心數組中包含哪...
閱讀 1824·2023-04-26 01:55
閱讀 1088·2021-09-30 09:47
閱讀 1683·2019-08-30 15:54
閱讀 749·2019-08-30 15:53
閱讀 701·2019-08-30 15:52
閱讀 1144·2019-08-30 15:44
閱讀 2418·2019-08-30 14:06
閱讀 1066·2019-08-29 16:39