2016-09-28 10 views
0

私はこのコードを使用しました。 変数が定義されていませんGoogle Console

しかし、Googleコンソールの

は、私はこのエラーを取得:キャッチされないにReferenceErrorを:助け

+4

なぜcatchブロック内のステッカーを扱うコードがありますか? –

+2

なぜ 'catch'ブロックに' stickers'を使用しようとしていますか? 'try'の1行が失敗した場合、' stickers'は実際には定義されません。 – Rhumborl

答えて

0

ため

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); 

    } 
} 

おかげであなたが宣言するvarを使うのを忘れていました:

コードはステッカーが

に定義されていません変数:

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

変数を宣言するのに 'var'を使う必要はありません。 'var'がなければ、それはまだグローバルとして宣言されるので、それは問題ではありません。 –

+1

グローバル名前空間の汚染を避けるためにOPで 'var stickers 'を使うべきですが、これは問題を解決することはできませんが、単にエラーメッセージを取り除くだけです。しかし、主な問題は、OPがcatchブロックの 'sticker'のプロパティを反復しようとしていることです。このブロック' sticker'は決して設定されません。 –

+0

ありがとう!今私はこのエラーが表示されます:VM2445:1 Uncaught SyntaxError:JSONの予期しないトークンGが位置1542にあります。どのように間違いがありますか? – emiliano

0

それがどのように使用されるのかとは正反対のブロックがあります。

tryは、例外をスローする可能性があるものです。しかし、あなたはそれがほしいとは思わない。

catchの場合は、tryブロックに例外がスローされます。

は、何も問題がなければ実行したいコードのようにcatchを使用しています。

関連する問題