首頁 >web前端 >js教程 >js中函數參數的實作原理

js中函數參數的實作原理

不言
不言原創
2018-07-16 14:58:431846瀏覽

js中函數的形參和實參的實現是不同的,在進行參數傳遞的時候,有時候可能實參的傳遞可能與形參對不上號,那麼怎麼樣才能將它們之間對上號呢?這是我們就需要對js中參數的實作原理進行研究了。

我們都知道JS裡面參數的傳遞是可以不一樣的,例如我們有函數:

<script type="text/javascript">
    function one(a,b,c) {        
    this.x = a;
        console.log(a);
    }
    one(1);</script>

我們傳遞的數字只有一個1,但是形參那裡有abc三個。這分明對不上啊不是嗎?

這個時候如果我們查看b,c的話會顯示undefined。 ps:例如console.log(b)。

當然啦,本來就沒有這兩個數字。怎麼找給你?

那面對這種實參和形參對不上號的情況,JS是怎麼實現的呢?讓我們來看一段程式碼:

<!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><title>JavaScript中函数的形参和实参的区别</title></head><body>
    <script type="text/javascript">
    function one(a,b,c) {        
    return one.length;
    }    function two(a,b,c,d,e,f,g){        
    return arguments.length;
    }
    console.log(one()); //3    
    console.log(two()); //0
    </script></body></html>

這裡我們在one函數裡面回傳了one.length,在two函數裡面回傳arguments.length。可能你已經發現了,輸出的one()回傳了one.length就是形參的數量,而argument.length就是實參的數量。


瞬間秒懂了有木有?

甚至我們可以用arguments[0]取到實參的數字。

但是為什麼沒有形參的數字可以用類似陣列的方式這樣表示呢?好吧,我知道你是處女座的凡事要求對稱。除非你形參是數組你可以這樣用。不然在函數裡面我們就只能用形參的名字來取得實際的參數了。

在C#,Java裡面對參數型別和個數相對JS來說要求十分嚴格,一點對不上就報錯了。而JS就因為有這樣的設計而可以變成相對靈活的語言。

上述方法就是JS所依賴的不強制對形參和實參規定個數相等的實現了。至於類型的相同,JS什麼類型都可以寫成var a = …,要類型何用?所以才說JS是一種弱型的語言嘛!

相關推薦:

對js函數的實參,形參以及閉包的理解

js的函數宣告和函數表達式的分析

#

以上是js中函數參數的實作原理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn