Js程式碼
var a = new Function("document.write(a)");
var b = function(){document.write(b); );
}
a();
b();
c();
執行後結果為使用:abc
) 的兩個定義項一個被賦予了函數體的函數。
對第一種方式,在查詢了若干資料後做一個小結。
Function 是Javascript的?戎枚韻螅??unction(注意大小寫)就是從它派生出來的,Function是一種引用類型(Functions are, of course, reference types.)。個人推測類似第2種匿名函數的引用。
Function實例建構方式:
var instanceName = new Function([arg1 [, arg2 [, ...]] ,] body);
Js代碼
var myAdd = new Function("x", "y", "return x + y");
var sum = myAdd(17, 34);
執行後sum的值為51。
Function()建構子允許我們動態地建立和編譯一個函數,它不會將我們限制在function語句預編譯的函數體中。這樣做帶來的負面影響效應就是每次呼叫函數時,Function()建構子都要對它進行編譯。因此,在循環體中或在經常使用的函數中,我們不應該頻繁地呼叫這個構造函數。
匿名函數與Function()建構函式用法相似;不同的是匿名函式在使用時只會被解析一次,而作為字串傳遞給Function()建構函式的 JavaScript程式碼則在每次呼叫建構函式時都要被解析和編譯一次。
還有一點值得注意的是,變數的作用域,Function()建構子變數作用域是全域的。例如:
Js代碼var y="global";
function constructFunction()
{
var y="local";作用域。
fun();
}
constructFunction();