首頁 web前端 js教程 JavaScript中的函數重載深入理解_javascript技巧

JavaScript中的函數重載深入理解_javascript技巧

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

在JavaScript中有一種特殊的資料型態---Function類型,JavaScript的每個函數都是Function類型的實例。由於函數是對象,因此函數名稱實際上也是一個指向函數對象的指針,不會與某個函數綁定。

<pre name="code" class="html">function sum(num1,num2) 
{ 
return num1 +num2; 
} 

alert(sum(10,10)); //20 
var other = sum; 
alert(other(10,10)); //20 
sum = null; 
alert(other(10,10)); //20
登入後複製

將函數名稱作為指向函數的指針,有助於理解為什麼ECMAScript中沒有函數重載的概念

function sum(num1) 
{ 
return num1 +100; 
} 
function sum(num1) 
{ 
return num1 +200; 
} 
alert(sum(200)); //400
登入後複製

雖然宣告了兩個同名函數,但是後面的函數覆蓋了前面的函數,以上等價於下面的程式碼

function sum(num1) 
{ 
return num1 +100; 
} 
sum = function(num1) 
{ 
return num1 +200; 
} 
alert(sum(200)); //400
登入後複製

在建立第二個函數時,實際上覆寫了引用的第一個函數變數sum

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

如何區分 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及以上):為不同類型參數建立函數的單一版本。

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

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

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

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

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

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

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

See all articles