function Hello()
{
function HelloAgain(){
}
}
function MyFunction(){
...
}
ここでは、MyAction()関数をMyFunction()から呼び出す必要があります。 このシナリオに対して可能な解決策を提案できますか?関数内の子関数をJavascriptの別の関数から呼び出す方法はありますか?
function Hello()
{
function HelloAgain(){
}
}
function MyFunction(){
...
}
ここでは、MyAction()関数をMyFunction()から呼び出す必要があります。 このシナリオに対して可能な解決策を提案できますか?関数内の子関数をJavascriptの別の関数から呼び出す方法はありますか?
できません。 HelloAgain
の範囲は、Hello
の機能に限定されています。 これはjavascriptでプライベートスコープを作成する唯一の方法です。
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();
}
googleダウンですか? –
'HelloAgain'がネストされている場合、それは親関数の外から使用すべきではないことを示唆しています。あなたが関数の外でそれを必要とするなら、なぜ最初にそれを入れ子にするのですか?そして、私はこれが論理的に意味をなさないと思う。子関数が親関数のデータを使用した場合はどうなりますか?親関数が呼び出されなかった場合、内部関数はどのデータを使用しますか? – Carcigenicate
あなたが何とかそれを公開しない限り、それは不可能です。 – epascarello