2017-08-03 107 views
0

下面的代碼片段是Drift chat方法來獲取用戶在聊天中提供的email id如何在JavaScript中給出局部變量,全局範圍

我試圖通過將email id (e.data.email)存儲在全局變量data_email之外來訪問給定函數範圍之外的email id (e.data.email)

我試圖three方法使data_email全局變量 - windowletconst

window.drift.on("emailCapture", function(e) { 
    console.log("user identified as: " + e.data.email); 

    window.data_email = e.data.email; 
    // let data_email = e.data.email; 
    // const data_email = e.data.email; 

    ga('send', 'event', { 
     eventCategory: 'driftemail', 
     eventAction: 'driftemailCaptured', 
    }); 
}); 

console.log(data_email); 

嘗試所有我得到的錯誤 - Uncaught ReferenceError: data_email is not defined。 請任何人建議我一個工作,我會非常感激。我的目標是在給定功能之外訪問捕獲的電子郵件。

+0

在嘗試檢索該值之前發生了事件嗎? – Teemu

+0

之後觸發事件和電子郵件捕獲功能 - 'console.log(「用戶標識爲:」+ e.data.email);'但外部變量相同的錯誤 –

+0

聲明它的事件處理程序,然後它將具有全局範圍 - 並且使用'let'或'var'而不是'const' –

回答

0

您需要首先初始化window.data_email,然後對其進行變異。因爲console.log將在其初始化之前運行。

+0

你能否請你提供一個代碼片段來做和你的回答一樣的 –

+0

比如@Jefree Sujit的答案 –

1

您在那裏遇到的問題是您正在收聽活動。現在可以發生,以後或永遠不會發生。但是,您立即嘗試進行控制檯日誌記錄。

鑑於您提供的信息量很小,可能會有各種解決方案來解決您的問題。但是,一個解決方案是:

  • 之外的功能,該功能接收電子郵件,並將它作爲全球

  • 電話與電子郵件作爲參數

像這樣的事情

window.drift.on("emailCapture", function(e) { 
    console.log("user identified as: " + e.data.email); 

    setChatEmail(e.data.email); 

    //window.data_email = e.data.email; 
    //let data_email = e.data.email; 
    //const data_email = e.data.email; 

    ga('send', 'event', { 
     eventCategory: 'driftemail', 
     eventAction: 'driftemailCaptured', 
    }); 
}); 


function setChatEmail(email) { 
    window.data_email = email; 
} 

延伸閱讀:

如何到set全局變量。

爲什麼global變量不好。

1

您的console.log在「emailCapture」事件執行之前運行。這就是爲什麼它給你未定義,嘗試一切你想要做的事情後執行此事件。

var data_email; 
var getEmail = function() { 
    console.log(data_email); 
}; 
window.drift.on("emailCapture", function(e) { 
    console.log("user identified as: " + e.data.email); 

    window.data_email = e.data.email; 
    data_email = e.data.email; 
    // const data_email = e.data.email; 

    ga('send', 'event', { 
     eventCategory: 'driftemail', 
     eventAction: 'driftemailCaptured', 
    }); 
    getEmail(); 
}); 
+0

在你的例子中,callbackFunc是一個回調函數嗎?顯然不是。要麼更改函數名稱,以免影響,或使其成爲回調。 –

+0

不明白你的問題 – Selvakumar

+0

你說的功能是回調。不是這樣。 –