0

次のコードでは、オブジェクトのように宣言されたメソッドを呼び出そうとしています。関数を呼び出すにはどうすればよいですか?

var draw = function() {
    anotherFunction();
}

draw();

「TypeError: オブジェクト [オブジェクト ウィンドウ] のプロパティ 'draw' は関数ではありません」というエラーが表示されます。

ありがとう。

4

1 に答える 1

0

簡単な Javascript スコープのレッスン。あなたがするとき:

 function someFunction() {
      var foo = 'bar';
 }
 someFunction();
 // foo doesn't exist

そのfoo変数は、someFunction を実行するのにかかる間だけ存続します。その後はなくなりました。

この問題は、「グローバル オブジェクト」に foo を設定することで解決できます。"窓":

 function someFunction() {
      window.foo = 'bar';
 }
 someFunction();
 // foo does exist!

ただし、非常に小さなサイトでない限り、すぐに乱雑になります (プログラミング言語には理由があります。すべてをグローバル空間に配置するのは非常に困難です)。

したがって、本当に必要なことは、foo を作成しているもの (あなたの場合はdraw) と foo ( draw) を使用しているものをより注意深く見て、2 つを近づけることができないか、またはdraw戻り値を作成する関数を持たせることができないかどうかを確認することです。それ、またはそのようなもの。

于 2012-12-27T21:12:57.300 に答える