關於由ajax返回的數據在for循環中只能取到最后一個數的問題

以上是來自后台的數據格式。從數據中可以看出,里面包含兩個商品,每個商品價格分別為:1.98,13.60。這里我要計算兩個商品的總價格,但是通過for循環只能取到最后一個價格,也就是13.60。代碼如下:
1 //這段代碼在ajax發送請求成功后的回調函數中執行 2 //data為后台傳過來的數據 3 var data_str=eval("(" + data + ")"); 4 for(var i=0;i<data_str.length;i++){ 5 jsonVal=eval("(" + data_str[i] + ")"); 6 var total_price = 0; 7 total_price=parseFloat(jsonVal.goodsnewprice)+total_price; 8 } 9 console.log(total_price);
結果:

在網上查閱了一些資料,沒有找到原因: 回調函數是在已經接收到全部響應數據的情況下才被調用,不存在數據正在返回和返回不完全的情況。 但是可以這樣解決:將在for循環里的處理封裝成一個單獨的函數,然后在for循環里調用該函數。
1 //處理函數 2 function chuli1(jsonVal){ 3 var res=parseFloat(jsonVal.goodsnewprice); 4 return res; 5 } 6 //在for循環中調用 7 for(var i=0;i<data_str.length;i++){ 8 var jsonVal=eval("(" + data_str[i] + ")"); 9 total_price += chuli1(jsonVal); 10 } 11 console.log(total_price);
結果:

會繼續找原因,希望有發現原因的小伙伴可以告知,共同學習。。。
