首頁 web前端 js教程 javascript函數重載解決方案分享_基礎知識

javascript函數重載解決方案分享_基礎知識

May 16, 2016 pm 04:59 PM
函數重載

JS的函數定義可以指定形式參數名稱,多多少少我們會以為js至少可以支援參數個數不同的方法重載,然而遺憾的是這只是一個假象,js所有的參數都是以arguments傳遞過去的,這個參數類似數組,在函數呼叫的時候,所有的實參都是保存在了這個資料結構裡面,我們定義函數的時候所指定的形式參數其實是為這個資料結構裡面的資料定義一個快速的存取方式。也就是說js所有的函數都是支援無限個參數的,加上資料型別是弱型別,那JS的函數除了名稱就真的沒有方法區別了?

辦法總是有的,我們可以利用JavaScript中的特殊物件arguments來模擬函數重載。用它來判斷傳入參數的個數或型別以區分重載。

1.依參數個數重載

js判斷傳入參數數量可以用arguments.length這個屬性來判斷;

複製代碼 代碼如下:



2.根据参数类型重载

判斷變數類型的3種方法:
1.用 typeof 語句判斷變數類型,typeof語句傳回型別對應的字串。
2.用 instanceof 語句判斷變數類型,instanceof語句傳回true/false。
3.用 constructor 屬性判斷變數類型,這個屬性回傳用來建構該變數的建構子參考。
對照表:可以看出用 typeof 不能準確的判斷出具體的類型,所以我們用 constructor 來判斷。

typeof string number object function boolean object object
constructor String Number Object Function Boolean Array User Define

複製代碼 代碼如下:




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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何區分 C++ 中函式重載與重寫 如何區分 C++ 中函式重載與重寫 Apr 19, 2024 pm 04:21 PM

函數重載允許一個類別中具有同名但簽名不同的函數,而函數重寫發生在衍生類別中,當它覆蓋基底類別中具有相同簽名的函數,提供不同的行為。

PHP 函數的重載與重寫 PHP 函數的重載與重寫 Apr 26, 2024 pm 05:12 PM

PHP中支援函數重載和重寫,可建立靈活可重複使用的程式碼。函數重載:允許建立同名函數,但參數不同,根據參數匹配情況呼叫最合適的函數。函數重寫:允許子類別定義同名函數,覆寫父類別方法,子類別方法呼叫時將覆寫父類別方法。

golang如何實作函式重載? golang如何實作函式重載? Apr 29, 2024 pm 05:21 PM

Go語言不支援傳統函數重載,但可以透過以下方法實現類似效果:使用命名函數:為不同參數或傳回類型的函數建立唯一名稱;使用泛型(Go1.18及以上):為不同類型參數建立函數的單一版本。

為什麼golang中沒有函式重載? 為什麼golang中沒有函式重載? Apr 30, 2024 am 10:54 AM

Go語言中不允許函數重載,原因如下:簡化編譯器實現提高程式碼可讀性避免名稱衝突Go中可以使用可變參數列表或介面來實現類似函數重載的行為。

C++ 函式重載的最佳實踐 C++ 函式重載的最佳實踐 Apr 20, 2024 am 10:48 AM

C++函數重載最佳實務:1、使用清晰且有意義的名稱;2、避免過載過多;3、考慮預設參數;4、保持參數順序一致;5、使用SF​​INAE。

C++ 函式重載是否適用於建構函式和析構函式? C++ 函式重載是否適用於建構函式和析構函式? Apr 14, 2024 am 09:03 AM

C++建構函式支援重載,而析構函式不支援。建構函數可具有不同的參數列表,而析構函數只能有一個空參數列表,因為它在銷毀類別實例時會自動調用,不需要輸入參數。

C++ 函式重載中歧義呼叫的處理方法是什麼? C++ 函式重載中歧義呼叫的處理方法是什麼? Apr 13, 2024 pm 09:18 PM

歧義呼叫發生在編譯器無法確定要呼叫哪個重載函數時。處理方法包括:為每個重載函數提供唯一的函數簽章(參數類型和數量)。使用顯式類型轉換強制呼叫正確的函數,如果一個重載函數的參數類型更適合給定呼叫的參數。如果編譯器無法解決歧義調用,將產生錯誤訊息,需要重新檢查函數重載並進行修改。

C++ 函式重載在實際專案中的應用場景? C++ 函式重載在實際專案中的應用場景? Apr 26, 2024 pm 01:57 PM

函數重載允許在C++中以不同方式定義具有相同名稱的函數,處理不同類型的參數或執行不同操作。具體應用場景包括:處理不同資料類型提供不同的功能提高程式碼可讀性

See all articles