2017-07-25 131 views
-1
function Hello() 
{ 
    function HelloAgain(){ 
    } 
} 

function MyFunction(){ 
... 
} 

這裏我需要從MyFunction()調用函數HelloAgain()。 你能爲這種情況提出任何可能的解決方案嗎?如何從Javascript中的另一個函數調用函數內的子函數?

+3

谷歌倒了? –

+0

如果'HelloAgain'是嵌套的,則表明它不應該從父函數之外使用。如果您在功能之外需要它,爲什麼要將它嵌套在第一位。我認爲這在邏輯上不合理。如果子函數使用父函數的數據會怎麼樣?如果父函數從未被調用,那麼內部函數將使用哪些數據? – Carcigenicate

+2

這是不可能的......除非你以某種方式暴露它。 – epascarello

回答

1

你不能。 HelloAgain il的範圍限於Hello函數。 這是在javascript中創建私有作用域的唯一方法。

0

您不能,HelloAgain函數在閉包中,並且被限定爲閉包。

您可以返回HelloAgain函數,然後在任何可以調用Hello的地方調用它。

function Hello() { 
    function HelloAgain() {} 
    return HelloAgain; 
} 

function MyFunction() { 
    Hello().HelloAgain(); 
} 

但這有點奇怪。

您可以使用this關鍵字來處理此事。

function Hello() { 
    this.helloAgain = function helloAgain() {} 
} 

var hello = new Hello(); 

function MyFunction() { 
    hello.helloAgain(); 
} 
+0

請解釋在這種情況下'this'將是'window'(因此使'helloagain'成爲一個全局變量),並說「你可以用這個'來處理這個問題」有點模糊。 – yuriy636

+0

'''''''''''''''''''''''https'jsfiddle.net/L09y3gcL/ –

+0

確實,對不起,完全錯過了'new Hello()'部分。 – yuriy636

相關問題