亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JS特殊函數(Function()構造函數、函數直接量)區別介紹

2019-11-20 22:42:34
字體:
來源:轉載
供稿:網友
函數定義
函數是由這樣的方式進行聲明的:關鍵字 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","return 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)");
callAnotherFunc(doAdd, 10); //輸出 "20"

注意:盡管可以使用 Function 構造函數創建函數,但最好不要使用它,因為用它定義函數比用傳統方式要慢得多。不過,所有函數都應看作 Function 類的實例 。
如果你定義的函數沒有參數,那么可以只需給構造函數傳遞一個字符串(即函數的主體)即可。
注意:傳遞給構造函數Function()的參數中沒有一個用于說明它要創建的函數名。用Function()構造函數創建的未命名函數有時被稱為“匿名函數”。
Function()函數允許我們動態地建立和編譯一個函數,它不會將我們限制在function語句預編譯的函數體中。
函數直接量
函數直接量是一個表達式,它可以定義匿名函數。函數直接量的語法和function語句非常相似,只不過它被用作表達式,而不是用作語句,而且也無需指定函數名。語法:
Js代碼
復制代碼 代碼如下:

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

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

var f = function fact(x) {
if (x <= 1) {
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代碼
復制代碼 代碼如下:

var y = "global";
function constructFunction() {
var y = "local";
//Function()構造函數
return new Function("return y;");//不使用局部作用域
}
function constFunction() {
var y = "local";
//函數直接量
var f = function () {
return y;//使用局部作用域
};
return f;
}
//顯示 global,因為Function()構造函數返回的函數并不使用局部作用域
alert(constructFunction()());
//顯示 lobal,因為函數直接量返回的函數并使用局部作用域
alert(constFunction()());
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲www在线| 久久久999国产| 日韩福利伦理影院免费| 正在播放欧美视频| 国产成人福利视频| 久久国产精品99国产精| 日韩福利在线播放| 日韩精品在线播放| 欧美电影免费在线观看| 久久久久九九九九| 国产精品美女久久久久久免费| 亚洲天堂影视av| 亚洲欧美制服第一页| 日韩精品中文在线观看| 欧美日韩xxxxx| 亚洲伊人第一页| 一区二区三欧美| 欧美在线亚洲在线| 成人激情av在线| 在线观看欧美www| 92看片淫黄大片看国产片| 日韩av在线网站| 日韩精品在线观看视频| 日韩视频免费在线观看| 国产亚洲精品久久| 亚洲xxxx妇黄裸体| 国产精品入口夜色视频大尺度| 美女啪啪无遮挡免费久久网站| 96国产粉嫩美女| 俺也去精品视频在线观看| 国产97色在线|日韩| 亚洲精品成人免费| 欧美—级a级欧美特级ar全黄| 国产视频精品久久久| 欧美另类在线观看| 国产91免费观看| 亚洲天堂av图片| 91国产精品91| 成人写真视频福利网| 国产精品久久久久高潮| 国产精品稀缺呦系列在线| 日韩精品中文字幕在线播放| 91亚洲国产成人精品性色| 久久久国产视频91| 成人福利视频网| 久久久久久久久久亚洲| 久久久久久久久久久久av| 久久精品99久久久香蕉| 国产精品91久久久| 亚洲午夜激情免费视频| 亚洲成人精品视频在线观看| 国产精品video| 欧美与黑人午夜性猛交久久久| 精品日韩视频在线观看| 亚洲嫩模很污视频| 国产日韩精品一区二区| 精品欧美国产一区二区三区| 岛国av在线不卡| 欧美风情在线观看| 国产aⅴ夜夜欢一区二区三区| 国产欧美婷婷中文| 久久6精品影院| 97视频人免费观看| 伊人亚洲福利一区二区三区| 国产精品aaaa| 97福利一区二区| 欧美精品一本久久男人的天堂| 清纯唯美亚洲激情| 久久国内精品一国内精品| 欧美日韩人人澡狠狠躁视频| 亚洲一区美女视频在线观看免费| 18性欧美xxxⅹ性满足| 久久影院模特热| 亚洲精品在线不卡| 久久免费视频在线| 国产精品高精视频免费| 97国产精品视频人人做人人爱| 欧美激情一区二区三级高清视频| 伊人久久久久久久久久久久久| 91黑丝在线观看| 欧美日韩成人在线视频| 亚洲爱爱爱爱爱| www.日韩.com| 成人国产精品一区| 成人黄色av网站| 亚洲精品资源在线| 中文字幕亚洲欧美在线| 日韩电影第一页| 国产亚洲成精品久久| 日韩在线中文字幕| 中文字幕亚洲欧美日韩在线不卡| 久久久久国产一区二区三区| 97av在线视频免费播放| 欧美性69xxxx肥| 成人精品视频久久久久| 国产成人aa精品一区在线播放| 国产精品精品视频| 欧美精品videossex性护士| 欧美日韩国产综合视频在线观看中文| 茄子视频成人在线| 成人日韩av在线| 国产精品久久久久久久天堂| 欧美精品在线免费播放| 日韩在线一区二区三区免费视频| 亚洲最大的成人网| 亚洲男人天堂手机在线| 国产精品毛片a∨一区二区三区|国| 久久国产精品99国产精| 亚洲片av在线| 久久综合久久美利坚合众国| 日韩电影免费观看在线| 欧洲日本亚洲国产区| x99av成人免费| 国产精品久久久久久av福利| 成人中心免费视频| 一二美女精品欧洲| 亚洲第一天堂av| 午夜欧美不卡精品aaaaa| 97视频在线观看播放| 午夜精品理论片| www.久久久久久.com| 日韩欧美精品网站| 亚洲福利在线看| 国内免费久久久久久久久久久| 在线性视频日韩欧美| 亚洲a区在线视频| 亚洲国产精品va在线观看黑人| 久久天堂电影网| 成人写真福利网| 亚洲国产精品国自产拍av秋霞| 日韩欧美在线一区| 国产精品高清免费在线观看| 久久国产视频网站| 国产精品稀缺呦系列在线| 亚洲国产精彩中文乱码av在线播放| 91精品国产91久久久| 国产成人啪精品视频免费网| 久久久久这里只有精品| 欧美寡妇偷汉性猛交| 久久综合色88| 精品偷拍一区二区三区在线看| 国产精品久久激情| 国产精品美女www爽爽爽视频| 久久久精品久久| 久久久久久久网站| 精品国产拍在线观看| 久久琪琪电影院| 亚洲а∨天堂久久精品9966| 日本一区二区在线免费播放| 亚洲欧美国产日韩天堂区| 日韩精品一二三四区| 日韩av电影国产| 国产精品爽黄69| 最新91在线视频| 成人福利在线视频| 国产精品久久久久不卡| 国产视频一区在线| 亚洲视频在线免费看| 国产婷婷成人久久av免费高清| 欧美大尺度在线观看| 久久九九亚洲综合| 国产亚洲精品久久久久久777| 日韩中文字幕精品视频| 亚洲a级在线观看|