2016-03-08 59 views
-2

如何使用其名稱引用例如全局函數一個局部變量呢?如何顯式引用全局函數?

以遞歸的這個簡單的例子:

function foobar(foobar) { 
    return foobar(foobar+1); //<- error in this line 
} 

這將產生錯誤「foobar的是不是一個函數」,作爲相同的名稱被定義爲參數。如何在不重命名函數或參數的情況下明確引用該函數? 我試過

function foobar(foobar) { 
    return Window.foobar(foobar+1); 
} 

沒有成功。

+4

'window'不以大寫字母開頭。 – JJJ

+0

只需重命名它......除非你有一個真正的用例。我想你可以使用'arguments.callee'(不能在嚴格模式下工作) –

+0

我認爲最好的做法是提供重現錯誤所需的最小代碼。那麼爲什麼選票呢? –

回答

0

爲@Juhana說這將工作,你會得到一個Exception: InternalError: too much recursion預期

function foobar(foobar) { 
    return window.foobar(foobar+1); 
} 
foobar(3); 
+0

如果這是[函數表達式](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/function) –

+0

謝謝。這只是重現錯誤消息所需的最低代碼。降低窗口確實解決了這個問題。 –

0

您可以使用命名函數表達式。在函數內使用函數名稱(recursive)。從外部將函數分配給名稱爲foobar的變量:

var foobar = function recursive(foobar) { 
    return recursive(foobar + 1); 
} 

foobar(5);