2017-04-22 4 views
-2

誰かがこれを手伝ってくれますか?なぜグローバルに定義されたオブジェクト 'arr'が関数 'go2'で認識されないのかわかりませんが、関数 'go2'を通してオブジェクトを渡す必要がありますか?以下は私のコード例です。異なる機能のjavascriptオブジェクト値 - 地図からポリラインを削除

var arr = {}; 
    function go(){ 
     var id = "id"; 
     var val = 2; 
     arr[id] = val; 
    } 
    function go2(name){ 
     console.log(name); 
     // can't get this to show the name value which should be 2 defined by 'val which is defined in the 'go' function. 
    } 
    setInterval(function(){ 
     var id = "id"; 
     var name = arr[id]; 
     go2(name); 
    }, 3000); 

編集:他の人が指摘しているように私はgo関数を呼び出していませんでした。私がここに投稿したコードは、私が現在取り組んでいるものの簡略版です。私はここでフィドルを作成しましたhttps://jsfiddle.net/david230/v99pppk1/私が取り組んでいることを示す。ロジックは同じですが、私の手がかりはGoogleマップを扱います。 drawRouteメソッドを使用して描画すると、IDに基づいてポリラインを削除することはできません。 drawnRouteObjは、それがarrはそうあなたのsetInterval関数内arr[id]がエラーをスローします参照する空のオブジェクトであることを意味し、実行されることは決してありませんgoのように見える、あなたがここに提供されているコードからのラインに常に29

+0

これらの関数はどのように呼び出されますか? – Pointy

+0

これまで表示されていないものは、 'arr'のプロパティを設定していません。あなたは決してgo()を呼びません。 'arr'を呼び出すオブジェクトリテラルの名前が混乱していますが、それはほとんどが配列ではないことを暗示すると思います。 – charlietfl

+0

私の間違いは、コードの単純化されたこの例ではコード関数を開始するのを忘れていました。私のコードでは、10秒ごとに呼び出されるajax呼び出しでgo関数が開始されます。 –

答えて

0

定義されていません。それはあなたが経験していることですか?

+0

あなたは正しいです。私の間違い。これは私のコードロジックの簡略版です。私はこのコードでgo関数を開始するのを忘れていました。 go機能を起動すると、機能します。私はまだコードに問題がありますが、もっと展開できるかどうかはわかります。ありがとうheylookitsme。 –

+0

'go'関数内でグローバルに定義された 'arr'オブジェクトに値を追加するので、別の関数で渡すことなく使用できますか?私は、私が求めているのは、他の関数で使用するためにキャッシュに格納された 'go'関数の中に新たに追加された値を持つ 'arr'オブジェクトですか? –

+0

はい、 'arr'オブジェクトのプロパティを参照しようとする前に' go'が呼び出されている限りです。これは役に立ちます:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#Variable_scope – heylookltsme

関連する問題