首頁 web前端 js教程 JS特殊函式(Function()建構子、函式直接量)區別介紹_基礎知識

JS特殊函式(Function()建構子、函式直接量)區別介紹_基礎知識

May 16, 2016 pm 05:33 PM
function 建構函數

函數定義
函數是由這樣的方式進行宣告的:關鍵字 function、函數名稱、一組參數,以及置於括號中的待執行程式碼。
函數的建構語法有三種:
Js程式碼
複製程式碼 程式碼如下:


程式碼如下:


程式碼如下:

程式碼如下: 1.function functionName(arg0, arg1, ... argN) { statements }//function語句2.var function_name = new Function(arg1, arg2, ..., argN, function_body); //Function()建構子3.var func = function(arg0, arg1, ... argN) { statements };//函數直接量

例:
Js程式碼



複製程式碼
程式碼如下:


1.function f(x){return x* x};//function語句
2.var f = new Function("x","re​​turn x*x;");//Function()建構子
3.var f = function(x) {return x*x;};//函數直接量


如果函數沒有明確的回傳值,或呼叫了沒有參數的return 語句,那麼它真正傳回的值就是undefined。
Function()建構子 函數其實是功能完整的物件 。 Function類別可以表示開發者定義的任何函數。用Function類別直接建立函數的語法如下: var function_name = new function(arg1, arg2, ..., argN, function_body) 在上面的形式中,每個arg 都是參數,最後一個參數是函數主體(要執行的程式碼)。這些參數必須是字串。
var sayHi = new Function("sName", "sMessage", "alert('Hello ' sName sMessage);");
sayHi("jzj,", "你好!");//Hello jzj,你好!
函數名稱只是指向函數的變量,那麼可以把函數當作參數傳遞給另一個函數嗎?答案是可以的,請看:
Js代碼



複製代碼


代碼如下:

代碼如下:


>function callAnotherFunc(fnFunction, vArgument) { fnFunction(vArgument); } var doAdd = new Function("iNum", "alert(iNum 10)"); 注意:儘管可以使用Function 建構函數建立函數,但最好不要使用它,因為用它定義函數比用傳統方式要慢得多。不過,所有函數都應視為 Function 類別的實例 。
如果你定義的函式沒有參數,那麼可以只要給建構函式傳遞一個字串(即函式的主體)。
注意:傳遞給建構函式Function()的參數中沒有一個用來說明它要建立的函式名稱。用Function()建構函數所建立的未命名函數有時被稱為「匿名函數」。
Function()函數允許我們動態地建立和編譯一個函數,它不會將我們限制在function語句預先編譯的函數體中。
函數直接量

函數直接量是一個表達式,它可以定義匿名函數。函數直接量的語法和function語句非常相似,只不過它被用作表達式,而不是用作語句,也無需指定函數名。語法:
Js程式碼 程式碼如下:



程式碼如下:


var function arg0, arg1, ... argN) { statements };//函數直接量

雖然函數直接量創建的是未命名函數,但是它的語法也規定它可以指定函數名,這在編寫呼叫自身的遞歸函數時非常有用,例如:
Js程式碼


複製程式碼
程式碼如下: var f = function fact(x) { if (x return 1;
} else { return x * fact(x - 1 ); } }; 註:它並沒有真正建立一個名為fact()函數,只是允許函數體用這個名字來引用自己。 JavaScript1.5之前的版本中沒有正確實作這種命名的函數直接量。 •函數引用 函數名並沒有什麼實質意義,它不過是用來保存函數的變數名字,可以將這個函數賦給其他變量,它仍然會以相同方式起作用: Js程式碼複製程式碼 程式碼如下:

function square(x){return x*x;}
var a = square;
var b = a(5);//b は 25

これはCの関数ポインタに少し似ています。
Function() コンストラクターと関数リテラルの違い
Function() コンストラクターと関数リテラルの違いは、コンストラクター Function() を使用して作成された関数が字句スコープを使用しないことです。それどころか、これらは常に次のようなトップレベル関数によってコンパイルされます。
Js コード
Copy code code 以下のように:

var y = "グローバル";
functionconstructFunction() {
var y = "local";
//Function() コンストラクター
return new Function( "return y;");//ローカルスコープを使用しない
}
function constFunction() {
var y = "local";
//関数リテラル
var f = function () {
return y;//ローカル スコープを使用します
}
return f;
}
//Function() コンストラクターはローカル スコープを使用しないため、グローバルを表示します。 scope
alert(constructFunction()());
//関数は関数を直接返し、ローカル スコープ
alert(constFunction()()) を使用するため、グローバルを表示します。 >
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡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

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
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)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1318
25
PHP教程
1269
29
C# 教程
1248
24
function是什麼意思 function是什麼意思 Aug 04, 2023 am 10:33 AM

function是函數的意思,是一段具有特定功能的可重複使用的程式碼區塊,是程式的基本組成單元之一,可以接受輸入參數,執行特定的操作,並傳回結果,其目的是封裝一段可重複使用的程式碼,提高程式碼的可重複使用性和可維護性。

'enumerate()'函數在Python中的用途是什麼? 'enumerate()'函數在Python中的用途是什麼? Sep 01, 2023 am 11:29 AM

在本文中,我們將了解enumerate()函數以及Python中「enumerate()」函數的用途。什麼是enumerate()函數? Python的enumerate()函數接受資料集合作為參數並傳回一個枚舉物件。枚舉物件以鍵值對的形式傳回。 key是每個item對應的索引,value是items。語法enumerate(iterable,start)參數iterable-傳入的資料集合可以作為枚舉物件傳回,稱為iterablestart-顧名思義,枚舉物件的起始索引由start定義。如果我們忽

MySQL.proc表的作用與功能詳解 MySQL.proc表的作用與功能詳解 Mar 16, 2024 am 09:03 AM

MySQL.proc表的功能與功能詳解MySQL是一種流行的關係型資料庫管理系統,開發者在使用MySQL時常常會涉及到預存程序(StoredProcedure)的建立與管理。而MySQL.proc表則是一個非常重要的系統表,它儲存了資料庫中所有的預存程序的相關信息,包括預存程序的名稱、定義、參數等。在本文中,我們將詳細解釋MySQL.proc表的作用與功能

Python中的建構函數 Python中的建構函數 Sep 02, 2023 pm 04:29 PM

在Python中,每個類別都有一個建構函數,它是類別內部指定的特殊方法。建構函數/初始化程序將在為類別建立新物件時自動呼叫。當物件被初始化時,建構函數將值指派給類別中的資料成員。沒有必要明確定義建構函數。但為了創建建構函數,我們需要遵循以下規則-對於一個類,它只允許有一個建構函數。建構函式名稱必須是__init__。必須使用實例屬性定義建構函式(只需將self關鍵字指定為第一個參數)。它不能傳回除None之外的任何值。語法classA():def__init__(self):pass範例考慮下面的範例並

C++語法錯誤:相同的建構函式簽章出現多次,該怎麼解決? C++語法錯誤:相同的建構函式簽章出現多次,該怎麼解決? Aug 22, 2023 pm 04:49 PM

C++是一門強大的程式語言,但在使用過程中,難免會遇到各種問題。其中,相同的建構函式簽章出現多次就是一種常見的語法錯誤。本文將介紹這種錯誤的原因和解決方法。一、錯誤原因在C++中,建構函式用來建立物件時初始化物件的資料成員。但是,如果在同一個類別中定義了相同的建構函式簽章(即參數型別和順序相同),編譯器就無法確定要呼叫哪一個建構函數,進而造成編譯錯誤。例如,

Vue.use函數的用法與作用 Vue.use函數的用法與作用 Jul 24, 2023 pm 06:09 PM

Vue.use函數的用法和作用Vue是一款流行的前端框架,它提供了許多有用的功能和功能。其中之一就是Vue.use函數,它可以讓我們在Vue應用中使用插件。本文將介紹Vue.use函數的用法和作用,並且提供一些程式碼範例。 Vue.use函數的基本用法非常簡單,只需在Vue實例化之前呼叫它,並傳入要使用的插件作為參數。以下是一個簡單的範例://引入並使用插件

在PHP中的clearstatcache()函數 在PHP中的clearstatcache()函數 Sep 07, 2023 am 09:33 AM

clearstatcache()函數用於清除檔案狀態快取。 PHP快取以下函數傳回的資訊−stat()lstat()file_exists()is_writable()is_readable()is_executable()is_file()is_dir()filegroup()fileowner()filesize()filetype()fileperms()這樣做是為了提供更好的性能。語法voidclearstatecache()參數NA傳回值clearstatcache(

在PHP中的file_exists()函數 在PHP中的file_exists()函數 Sep 14, 2023 am 08:29 AM

file_exists方法檢查檔案或目錄是否存在。它接受要檢查的檔案或目錄的路徑作為參數。以下是它的用途-當您需要在處理之前知道文件是否存在時,它非常有用。這樣,在建立新檔案時使用此函數即可知道該檔案是否已存在。語法file_exists($file_path)參數file_path-設定要檢查是否存在的檔案或目錄的路徑。必需。返回file_exists()方法返回。如果檔案或目錄存在,則傳回TrueFalse,如果檔案或目錄不存在範例讓我們看一個檢查「candidate.txt」檔案和即使文件

See all articles