您好,登錄后才能下訂單哦!
這篇文章主要介紹“JS中為什么沒有函數重載”,在日常操作中,相信很多人在JS中為什么沒有函數重載問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”JS中為什么沒有函數重載”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
函數重載是指在同一作用域內,可以有一組具有相同函數名,不同參數列表(參數個數、類型、順序)的函數,這組函數被稱為重載函數。重載函數通常用來聲明一組功能相似的函數,這樣做減少了函數名的數量,避免了名字空間的污染,對于程序的可讀性有很大的好處。
方法簽名指的是函數的名稱加形參列表,并且通過函數的名稱或者形參列表都可以區分出是不同的函數。
JS中通過形參是沒有辦法區分出不同的函數的,只能通過函數的名稱區分出不同的函數。
上述實際上是一個函數,后面的函數add會覆蓋前面的函數,究其原因還是因為JS是弱類型的語言,a和b實際上都是用var聲明的,等價于
所以在JS中只能通過函數名稱來辨別是不是同一個函數,形參是沒有用的。
但是在強類型的語言中就是可以的,例如在c語言中,定義函數時形參必須要指定類型,向里面傳值的時候也必須傳遞指定類型的值。函數名相同,形參名不同的函數也會被認為是不同的函數。
所以,在C語言這種強類型的語言中是可以實現函數重載的,JS這種弱類型的語言是不可以的。
另一中理解的角度是可以將函數名想象為指針,函數名中存放的是函數體存放的地址。
最終add實際上指向的是第二個函數,第一個函數被覆蓋了,所以最終調用add時調用的也是第二個函數,并不能實現函數的重載。
到此,關于“JS中為什么沒有函數重載”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。