2016-09-28 91 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想要执行的代码,如果没有出错。