2017-12-06 7 views
-1

今日はエラーに遭遇しましたが、なぜそれが発生したのかわかりません。 2番目のforループでは、関数へのパラメータとして挿入されたデータではなく、データへのアクセスが未定義になります。この関数に渡されたObjectではなく、何らかの形でデータがnullの値を取得します。なぜ誰が知っていますか?私が得るエラーは、 "データが定義されていません"です。なぜData Nullですか?

 createDataObject: function (data) { 
     let dataObj = data.source[0]; 
     let backedData = data.backedData; 
     for (let i in dataObj) { 
      let d = dataObj[i]; 
      d.data = { source: d.data }; 
     } 
     for (let i = 0; i < data.backedData.length; i++) { 
      let bd = data.backedData[i];  //<- this is where the error occurrs 
      let data = bd.data[0]; 
     } 
} 

私が使っていた試してみると、オブジェクトの外側のコードがありますが、これはあなたのコンソールまたはノードで動作します。私はJavascriptコンパイラのバグに遭遇したようです。私はわかりません。

createDataObject({source: [[{data: 1}]], backedData: [1,2,3, 4]}); 

私はあなたが別のデータオブジェクトを作成し、forループ秒で

createDataObject: function (data) { 
     let dataObj = data.source[0]; 
     let backedData = data.backedData; //create the backedData variable here 
     for (let i in dataObj) { 
      let d = dataObj[i]; 
      d.data = { source: d.data }; 
     } 
     for (let i = 0; i < backedData.length; i++) { 
      let bd = backedData[i]; // no Error 
      let data = bd.data[0]; 
      //..... 
     } 
    } 
+1

'はconsole.log(backedData)' –

+2

'null'なので "が定義されていない" とは非常に異なっものですを使用してみてください。 * exact *エラーとは何ですか?それは本当にそれを投げる正確な行ですか?関連する変数をコンソールに記録するとどうなりますか? – David

+0

backDataは未定義ではなく、データは未定義です。 – Jackstine

答えて

0

次の操作を行う場合は上記のコードは動作します。データはforループの最初の行には作成されません。

for (let i = 0; i < data.backedData.length; i++) { 
     let bd = data.backedData[i]; 
     let d= bd.data[0]; // Convert data to d or another variable name 
     //..... 
    } 
関連する問題