2016-09-28 48 views
0

我已使用此代碼。變量未定義Google控制檯

但在谷歌控制檯我得到這個錯誤:未捕獲的ReferenceError:

this.createSavedStickers = function(stickersJSON) { 
    try { 
    stickers = JSON.parse(stickersJSON); 
    } catch (e) { 
    for (var i in stickers) { 
     sticker_properties = JSON.parse(stickers[i].properties); 
     var from_left = this.calcLeft(sticker_properties.from_center); 
     sticker = jQuery('<div/>', { 
     id: stickers[i].sticker_id, 
     class: 'wpst-sticker-note sticked saved', 
     "data-from-center": sticker_properties.from_center, 
     css: { 
      "top": sticker_properties.top + "px", 
      "left": from_left + "px", 
      "position": "absolute" 
     } 
     }).appendTo('body'); 
     sticker.html(this.stickerHTML).find(".textarea").html(stickers[i].note); 
     sticker.find(".resize").css({ 
     width: sticker_properties.width + "px", 
     height: sticker_properties.height + "px" 
     }); 
     this.bindEvents(sticker); 
     this.allStickers.push(sticker); 
    } 
    console.log(e); 

    } 
} 

感謝您的幫助

+4

爲什麼代碼處理catch塊中的貼紙? –

+2

你爲什麼要在'catch'塊中使用'stickers'。如果'try'中的一行失敗,''''''''確實會被undefined – Rhumborl

回答

0

你忘了使用var聲明:

的代碼貼沒有定義

變量:

var stickers = JSON.parse(stickersJSON); 
+1

你不需要使用'var'來聲明一個變量。如果沒有'var',它仍然會將其聲明爲全局的,所以這不是問題。 –

+1

儘管OP應該使用'var stickers'來避免全局命名空間的污染,但這並不能解決問題,它只會刪除錯誤消息。但主要的問題是,OP試圖在catch塊中遍歷'stickers'的屬性,在這個塊中'sticker'永遠不會被設置。 –

+0

謝謝!現在我得到這個錯誤:VM2445:1未捕獲SyntaxError:意外的令牌G在位置1542的JSON中。我如何看到錯誤在哪裏? – emiliano

0

您正在使用c與它應該如何使用完全相反。

try是你可能會拋出異常的東西。但你希望它不會。

catch是你把你想要執行的東西如果try塊中拋出異常。

正在使用catch想要執行的代碼,如果沒有出錯。