函數是一組執行特定任務(具有特定功能)的,可以重複使用的程式碼區塊。除了使用內建函數外,我們還可以自行建立函數(自訂函數),然後在需要的地方呼叫這個函數,這不僅可以避免編寫重複的程式碼,還有利於程式碼的後期維護。
一:宣告函數的幾種方法
JavaScript中自訂函數的宣告方法有3 種,即使用function語句、使用Function() 建構函數和定義函數直接量。
1、function 語句
#在 JavaScript 中可以使用 function 語句宣告函數。具體用法如下:
function funName([args]) { statements }
funName 是函數名,與變數名一樣必須是 JavaScript 合法的識別碼。在函數名稱之後是一個由一個小括號包含的參數列表,參數之間以逗號分隔。參數是可選的,沒有數量限制。
作為標識符,參數只在函數體內被訪問,參數是函數作用域的私有成員。呼叫函數時,透過為函數傳遞值,然後使用參數來取得外部傳入的值,並在函數體內幹預函數的運作。
在小括號之後是一個大括號,大括號內包含的語句就是函數體結構的主要內容。在函數體重,大括號是必不可少的,缺少大括號,JavaScript 將會拋出語法錯誤。
範例
function 語句必須包含函數名稱、小括號和大括號,其他程式碼都可省略,因此最簡單的函數體就是一個空函數。
function funName() {} //空函数
如果使用匿名函數,則可以省略函數名稱。
function () {} //匿名空函数
var 語句和 function 語句都是宣告語句,它們宣告的變數和函數都在 JavaScript 預先編譯時被解析,也稱為變數提升和函數提升。在預編譯期,JavaScript 引擎會為每個 function 建立上下文,定義變數對象,同時把函數內所有形參、私有變數、巢狀函數作為屬性註冊到變數物件上。
2、Function() 建構子
#使用 Function() 建構子可以快速產生函數。具體用法如下:
var funName = new Function(p1, p2, ..., pn, body);
Function() 的參數類型都是字串,p1~pn 表示所建立函數的參數名稱列表,body 表示所建立函數的函數結構體語句,在body 語句之間以分號分隔。
範例1
可以省略所有參數,只傳遞一個字串,用來表示函數體。
var f = new Function ("a", "b", "return a+b"); //通过构造函数来克隆函数结构
在上面程式碼中,f 就是所建立函數的名稱。同樣是定義函數,使用 function 語句可以設計相同結構的函數。
function f(a, b) { //使用function语句定义函数结构 return a + b; }
範例2
使用 Function() 建構子可以不指定任何參數,建立一個空函數結構體。
var f = new Function(); //定义空函数
使用 Function() 建構子可以動態的建立函數,它不會把使用者限制在 function 語句預先宣告的函數體內。使用 Function() 建構函數能夠把函數當作表達式來使用,而不是當做一個結構,因此使用起來會比較靈活。其缺點就是,Function() 建構函式在執行期間被編譯,執行效率非常低,一般不建議使用。
3、匿名函數(函數直接量)
函數直接量也稱為匿名函數,即函數沒有函數名,只包含function 關鍵字、參數和函數體。具體用法如下:
function ([args]) { statements }
範例1
下面程式碼定義一個函數直接量。
function (a, b) { //函数直接量 return a + b; }
在上面程式碼中,函數直接量與使用 function 語句定義函數結構基本上相同,它們的結構都是固定的。但是函數直接量沒有指定函數名,而是直接利用關鍵字 function 來表示函數的結構,這種函數也稱為匿名函數。
範例2
匿名函數就是一個表達式,也就是函數表達式,而不是函數結構的語句。下面把匿名函數當作一個值賦值給變數 f。
//把函数作为一个值直接赋值给变量 f var f = function (a, b) { return a + b; };
當把函數結構當作一個值賦值給變數之後,變數就可以當作函數被調用,此時變數就指向那個匿名函數。
console.log(f(1,2)); //返回值3
範例3
#匿名函數作為值,可以參與更複雜的表達式運算。針對上面範例可以使用以下程式碼完成函數定義和呼叫一體化操作。
console.log( //把函数作为一个操作数进行调用 (function (a,b) { return a + b; })(1, 2)); //返回数值3
4、箭頭函數
箭頭函數是es6函數的簡寫方式,箭頭函數沒有自己的this,他的this是在定義的時候確定的,值為上一層的this。
//箭头函数 const sayName = ()=>{ console.log("箭头函数") }
二:调用函数
一旦定义好了一个函数,我们就可以在当前文档的任意位置来调用它。调用函数非常简单,只需要函数名后面加上一个括号即可,例如 alert()、write()。注意,如果在定义函数时函数名后面的括号中指定了参数,那么在调用函数时也需要在括号中提供对应的参数。
示例代码如下:
function sayHello(name){ document.write("Hello " + name); } // 调用 sayHello() 函数 sayHello('PHP中文网');
提示:JavaScript 对于大小写敏感,所以在定义函数时 function 关键字一定要使用小写,而且调用函数时必须使用与声明时相同的大小写来调用函数。
【相关推荐:javascript学习教程】
以上是深入解析JS自訂函數的聲明和調用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。1.Python以简洁语法和丰富库生态著称,适用于数据分析和Web开发。2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。

JavaScript不需要安裝,因為它已內置於現代瀏覽器中。你只需文本編輯器和瀏覽器即可開始使用。 1)在瀏覽器環境中,通過標籤嵌入HTML文件中運行。 2)在Node.js環境中,下載並安裝Node.js後,通過命令行運行JavaScript文件。

如何在Quartz中提前發送任務通知在使用Quartz定時器進行任務調度時,任務的執行時間是由cron表達式設定的。現�...


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Dreamweaver Mac版
視覺化網頁開發工具

記事本++7.3.1
好用且免費的程式碼編輯器