- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) > 編程語(yǔ)言 >
- JS中為什么沒(méi)有函數重載
這篇文章主要介紹“JS中為什么沒(méi)有函數重載”,在日常操作中,相信很多人在JS中為什么沒(méi)有函數重載問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對大家解答”JS中為什么沒(méi)有函數重載”的疑惑有所幫助!接下來(lái),請跟著(zhù)小編一起來(lái)學(xué)習吧!
函數重載是指在同一作用域內,可以有一組具有相同函數名,不同參數列表(參數個(gè)數、類(lèi)型、順序)的函數,這組函數被稱(chēng)為重載函數。重載函數通常用來(lái)聲明一組功能相似的函數,這樣做減少了函數名的數量,避免了名字空間的污染,對于程序的可讀性有很大的好處。
方法簽名指的是函數的名稱(chēng)加形參列表,并且通過(guò)函數的名稱(chēng)或者形參列表都可以區分出是不同的函數。
JS中通過(guò)形參是沒(méi)有辦法區分出不同的函數的,只能通過(guò)函數的名稱(chēng)區分出不同的函數。
上述實(shí)際上是一個(gè)函數,后面的函數add會(huì )覆蓋前面的函數,究其原因還是因為JS是弱類(lèi)型的語(yǔ)言,a和b實(shí)際上都是用var聲明的,等價(jià)于
所以在JS中只能通過(guò)函數名稱(chēng)來(lái)辨別是不是同一個(gè)函數,形參是沒(méi)有用的。
但是在強類(lèi)型的語(yǔ)言中就是可以的,例如在c語(yǔ)言中,定義函數時(shí)形參必須要指定類(lèi)型,向里面傳值的時(shí)候也必須傳遞指定類(lèi)型的值。函數名相同,形參名不同的函數也會(huì )被認為是不同的函數。
所以,在C語(yǔ)言這種強類(lèi)型的語(yǔ)言中是可以實(shí)現函數重載的,JS這種弱類(lèi)型的語(yǔ)言是不可以的。
另一中理解的角度是可以將函數名想象為指針,函數名中存放的是函數體存放的地址。
最終add實(shí)際上指向的是第二個(gè)函數,第一個(gè)函數被覆蓋了,所以最終調用add時(shí)調用的也是第二個(gè)函數,并不能實(shí)現函數的重載。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站