相信每一位剛接觸javascript的同學在函數參數傳遞上都會很疑惑,原因無他,那就是它的語法太怪異了,你定義一個函數
例如
function test(name,msg){ return 'hello' + name + msg; }
那麼你在調用的時候怎麼調呢,你可以test('Eric'),test('Eric','welcome to javascript')甚至你可以給它傳遞任意多個參數,並且類型隨意.這是多麼爽的一件事情,學過c++/c#或者java的同學可能就會想到函數重載。但是,我要告訴你的是,javascript中不存在函數重載,如果你定義了兩個同名函數,那麼先定義的函數將被後定義的覆蓋,意思便是你想要的結果只能從後定義的函數中得到。
好了,言歸正傳,為什麼javascript的函數傳遞可以這麼隨意呢,那我們就先來看看傳過來的參數都存到哪裡吧。實際上,在它的內部實現中,所有傳過來的參數都存在一個數組中。函數接收到的始終是這個數組,而不關心這個數組包含了哪些參數。現在就好理解了,我們定義了一個函數,調用的時候參數可以隨便傳,你傳多少它都給你加入數組中,如果不傳,那麼你的形參全部都是‘undefined',這並不會有什麼語法錯誤,但是語義上就不好說了。
好了,,,,,,,,第一次寫博客,小弟不才,讓各位見笑了,希望這篇博文能對你有些許幫助。。。。
I LOVE YOU,GUYS!