您好,登錄后才能下訂單哦!
這篇文章主要介紹JavaScript中function函數怎么用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
通過函數來封裝任意多條語句,而且可以在任何地方、任何時間調用執行。
而我們的JavaScript
腳本語言比較特殊,相對于C語言,它的參數是不需要數據類型加持的。返回值return
,我就不過多描述,他是和 C語言通的,如果沒寫他就會自動返回undefined
function fun(x,y){ } //寫成這樣就可以聲明一個函數
以我的理解他就是以對象的形式來傳入參數,通過對象的各項屬性值(引用類型的值),來作為我的實際參數,
例如我有以下做法:
function fun(x, y) { // alert("x的值是" + x.value); alert("x的值是" + x); }
當我是這種操作的時候,他的彈出框報錯是:x的值是[object HTMLInputElement],
以對象的形式傳入的它是不符合我的邏輯設計的,應該是下面的這種做法。
返回我的x的value
值。
function fun(x, y) { alert("x的值是" + x.value); // alert("x的值是" + x); }
所以當我設計一個簡單的,兩個整數數字相乘,返回值。
這里就要特別記憶一下<form></form>
要把輸入的這一段html
代碼寫在這個標簽里。不然你將會找好半天錯誤(別問我怎么知道的,說多了都是淚)
咋們是深度理解,先別急,再看看這段代碼:
是不是著這里有著不一樣的發現,照以前的這個函數寫法,鐵定是在亂寫,是不是?但是他在這里是能運行的,笑死(開心的笑)
也就是說ECMAScript
函數不介意傳進來多少個參數,也不在乎你傳進來個神馬參數,解析器永遠都不會有任何怨言。(太爽了,老師再也不用擔心我不會傳參了),那他是如何解決這個“世紀難題 ”的呢,其實在每個函數體內,都有一個arguments
對象來訪問這個參數數組,從而獲取傳遞給數組的每一個參數。
道友試試給下面代碼fun
函數用雙引號fun
(“勇敢”,“牛牛”),會發生什么現象,解釋一下就是上引號就近配對,嗚嗚嗚嗚
哎,這和咱們學的java
函數重載是不是有點那味道了呀,其實JavaScript
是沒有重載滴。
再看兩個例子:
function fun() { if (arguments.length == 1) { alert(arguments[0] + 10); } if (arguments.length == 2) { alert(arguments[0] + arguments[1]); } } fun(10);//20 fun(10,20);//30
也只能通過傳入參數的個數上,實現適當的功能,并不是實現真正意義上的重載,雖然特性算不上完美的重載,但是也足夠彌補JavaScript
的這一遺憾。arguments
也可以與參數與一起使用,
如下:
function fun(num1, num2) { if (arguments.length == 1) { alert(num1 + 10); } if (arguments.length == 2) { alert(arguments[0] + num2); } } fun(10);//20 fun(10, 20);//30
那么就有寶問了,參數反正都是賦值在arguments
對象中,那么我直接修改 arguments[i]
值是否可行呢?
那有意思的是,關于arguments
行為,它的值永遠與對應的命名參數值保持同步,他會修改當下函數內的值!!!,也就是說參數與arguments[i]
內存空間時獨立的,但是值會同步。
function fun(num1, num2) { arguments[1] = 10; alert(arguments[0] + num2); } </script> <form> <br><input type="button" onclick="fun(10,20)" value="點擊"> </form>
他彈出框的值就是20;可見是修改arguments[i]
值,會自動反應到這個參數當中,要是沒有這個參數,重寫這個參數值,將會導致語法錯誤。代碼不會執行。如果有兩個相同的函數名他不會報錯,但是該名字只屬于后定義的函數。
以上是“JavaScript中function函數怎么用”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。