2010-05-11 138 views
4

我讀了谷歌地圖API,它指出:JavaScript:函數名稱和函數引用有什麼區別?

"callback: The function to call once the script has loaded. If using the Auto-loading feature, this must specify a function name, not a function reference. 

有什麼區別是一個JavaScript函數名VS函數引用?

http://code.google.com/apis/ajax/documentation/#GoogleLoad

+0

你能提供一個鏈接到文件片段的確切位置嗎?它實際上是用於API本身,還是用於Google JavaScript加載器,或者它是什麼?哦,我找到了。 – Pointy 2010-05-11 18:10:23

+0

@Pointy,鏈接上面 – Teddyk 2010-05-11 18:11:30

回答

1

功能:function func() {}

功能參考:func

函數名稱:'func'

0

哦,也許文檔的該位的意思是說那是什麼「名稱」,預計應該是包含函數的名稱的字符串,而不是一個「裸」函數名(其中對函數的引用是)或函數實例化/定義表達式。

編輯好的,我明白這筆交易是什麼。這實際上不是谷歌地圖的東西,它是Google Javascript加載器工具包。 API確實需要一個字符串,這是非常有意義的,因爲您要調用的函數在您要加載的代碼內部爲,因此不能從對調用環境進行引用。

google.load("feeds", "1", {"callback" : "someFunctionName"}); 

這也就沒有什麼意義的寫:

google.load("feeds", "1", {"callback" : someFunctionName}); 

因爲使用這樣的—作爲參考的東西—不可能是正確的函數的引用(「someFunctionName」如果它被定義完全)。

+0

所以它將* callback = function_name *或* callback = function_name()*? – Teddyk 2010-05-11 18:08:43

+0

都不是:'{callback:「function_name」}' – Pointy 2010-05-11 18:15:57

1

函數名稱是一個字符串("alert")。函數引用是函數本身(alert)。

+0

所以它會* callback =「function_name」*? – Teddyk 2010-05-11 18:10:12

+0

如果您使用自動加載。 – 2010-05-11 18:10:53

+0

是的,我正在使用自動加載。那麼* callback =「function_name」*正確嗎? – Teddyk 2010-05-11 18:12:06

1

一個函數的名稱是一個字符串,例如在這種情況下 '富':

function foo() {} 

對函數的引用是任何設置爲函數本身值的變量(不是c的結果將它分開)。

Javascript中的函數可以是anonymous - 您可以引用一個沒有名字的函數。

var bar = function() {} 
0

沒什麼。

// f1 :: function name 
function f1(a) { return a*a; } 

// f2 :: reference to an anonymous function 
var f2 = function(a) { return a*a; } 

// f3 :: a reference to the first function 
var f3 = f1; 

// these are equivalent. The second one calls into 
// a different actual function. 
f1(3); // 9 
f2(4); // 16 
f3(5); // 25 
+0

如果你閱讀上下文中的文檔片段,這個問題是有意義的。 – Pointy 2010-05-11 18:17:03

+0

我明白了。 。 。 – Cheeso 2010-05-11 18:25:01

相關問題