首頁 web前端 js教程 詳解JS函數重載_javascript技巧

詳解JS函數重載_javascript技巧

May 16, 2016 pm 04:29 PM
javascript js 函數重載

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

複製程式碼 程式碼如下:


小夥伴們是否理解了javascript函數重載的方法了呢,有疑問就留言吧

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

建議:優秀JS開源人臉偵測辨識項目 建議:優秀JS開源人臉偵測辨識項目 Apr 03, 2024 am 11:55 AM

人臉偵測辨識技術已經是一個比較成熟且應用廣泛的技術。而目前最廣泛的網路應用語言非JS莫屬,在Web前端實現人臉偵測辨識相比後端的人臉辨識有優勢也有弱勢。優點包括減少網路互動、即時識別,大大縮短了使用者等待時間,提高了使用者體驗;弱勢是:受到模型大小限制,其中準確率也有限。如何在web端使用js實現人臉偵測呢?為了實現Web端人臉識別,需要熟悉相關的程式語言和技術,如JavaScript、HTML、CSS、WebRTC等。同時也需要掌握相關的電腦視覺和人工智慧技術。值得注意的是,由於Web端的計

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

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

js和vue的關係 js和vue的關係 Mar 11, 2024 pm 05:21 PM

js和vue的關係:1、JS作為Web開發基石;2、Vue.js作為前端框架的崛起;3、JS與Vue的互補關係;4、JS與Vue的實踐應用。

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

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

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

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

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

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

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

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

C++ 函式重載的限制和注意事項有哪些? C++ 函式重載的限制和注意事項有哪些? Apr 13, 2024 pm 01:09 PM

函數重載的限制包括:參數類型和順序必須不同(相同參數個數時),不能使用預設參數區分重載。此外,模板函數和非模板函數不能重載,不同模板規範的模板函數可以重載。值得注意的是,過度使用函數重載會影響可讀性和偵錯,編譯器從最具體到最不具體的函數進行搜尋以解決衝突。

See all articles