2017-04-22 16 views
-2

有人可以幫助我這個。我不知道爲什麼在函數'go2'中不能識別全局定義的對象'arr',是否需要通過函數'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/以顯示我正在處理的內容。邏輯是一樣的,但我的小提琴處理谷歌地圖。在使用drawRoute方法繪製它之後,我無法移除基於ID的多段線,在這種情況下,ID是目標座標。該drawnRouteObj總是不確定在線29

+0

這些函數是如何調用的? – Pointy

+0

沒有顯示任何設置'arr'上的任何屬性。你永遠不會打電話去()。令人困惑的對象字面名稱叫做'arr',大多數人會認爲它暗含的是數組,它不是 – charlietfl

+0

我的錯誤是,我忘記了在我的代碼的簡化示例中啓動代碼函數。在我的代碼中,go函數是在每10秒調用一次的ajax調用中啓動的。 –

回答

0

從你這裏提供的代碼,它看起來像go從來沒有得到執行,這意味着arr是在你的setInterval函數將拋出一個錯誤,以便引用arr[id]一個空的對象。這是你正在經歷的嗎?

+0

你說得對。我的錯。這是我的代碼邏輯的簡化版本。我忘了在這段代碼中啓動go功能。啓動go功能後,它可以工作。我仍然遇到我的代碼問題,但我會看看我是否可以擴展更多。謝謝heylookitsme。 –

+0

由於我向在'go'函數內全局定義的'arr'對象添加一個值,我可以在不通過它的情況下將它用於不同的函數嗎?我想我要問的是,'arr'對象的'go'函數中的新增值是否存儲在緩存中以供我在其他函數中使用它? –

+0

是的,只要在嘗試引用'arr'對象中的任何屬性之前調用'go'。這可能會有所幫助:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#Variable_scope – heylookltsme