2016-03-06 96 views
0

我正在開發一個帶有Electron.io的桌面應用程序。我有一些數據從firebase數據庫返回,並試圖將一些用戶信息與key in obj相匹配,但它會在電子控制檯中引發錯誤。我在正常的網頁上粘貼了相同的確切代碼,並且返回正常。那麼,什麼是關於電子桌面開發的,它引發錯誤Uncaught ReferenceError: key is not defined這裏是我的代碼:obj JavaScript中的Electron.io鍵未定義?

JS:

firebase.on('value', function(dataSnapshot) { 
    console.log('dataSnapshot: ',dataSnapshot.val()); 
    var userData = dataSnapshot.val(); 

    //see if user and password match 
    for(key in userData){ 
     if(JSON.stringify(userData[key].user) === JSON.stringify(payload.data.userName) && JSON.stringify(userData[key].password) === JSON.stringify(payload.data.password)){ 
     console.log('true'); 
     } 
    }; 

}); 
+1

varData key in userData'。 –

+0

工作。你能解釋爲什麼用var設置它,以及爲什麼具有普通html文檔的瀏覽器不會拋出引用錯誤? – Chipe

+0

你沒有聲明它 –

回答

1

電子可能運行你的代碼strict mode

如果您嘗試將值分配給尚未定義的變量,嚴格模式將拋出ReferenceError。這有助於防止您無意中聲明全局變量。

分配這將意外地創建全局變量的嚴格模式,而不是拋出:

'use strict';指令添加到您的文件的頂部或函數來評估與在瀏覽器中嚴格規定的代碼。

您可以通過將var添加到您的循環綁定來修復它。

for(var key in userData){ 
    // ... 
} 
+0

這就解釋了它,這正是爲什麼。我甚至不認爲這是問題。謝謝! – Chipe