2

オブジェクトリテラル内でエラー処理を行うにはどうすればよいですか?
少なくとも私はそれがこのように動作することを望みました:

window.App={
  Variables:{
    "views_data":
      try{
        json_parse(Drupal.settings.royal)
      }
      catch(e){
        JSON.parse(Drupal.settings.royal)
      }        
  }
}
4

3 に答える 3

4

すぐに呼び出される関数を使用できます。

window.App = {
    Variables: {
        views_data: (function(){
            var data;
            try{
                data = json_parse(Drupal.settings.royal)
            }
            catch(e){
                data = {}
            }
            return data;
        }())
    }
}
于 2013-03-27T21:17:57.270 に答える
1

制御構造と同様try{...}catch(err){...}に、javascript でオブジェクト リテラルに追加することはできません。を保存する場所に応じて、次のようにDrupal.settings.royalオブジェクトを記述できます。

window.App = {
    Variables: {
        views_data: null    // this is optional
    }
};

オブジェクトの準備ができたので、解析された json をオブジェクトに追加してみてください。

try{
    window.App.Variables.views_data = json_parse(Drupal.settings.royal);
}catch(err){
    window.App.Variables.views_data = JSON.parse(Drupal.settings.royal);
}

素敵できれい。

于 2013-03-27T21:19:51.747 に答える
1

1) 即時呼び出し関数式を使用する

views_data : (function () {
    var result = "",
        json = Drupal.settings.royal;

    try { result = json_parse(json); }
    catch (e) { result = JSON.parse(json); }
    return result;
}())

2) あなたの に何か特別なものがない限りjson_parse、実際にはこれを逆に行うことをお勧めしJSON.parseます。代わりにブラウザの , を使用します。ネイティブ実装は、自分で作成できるものよりも高速になります。JSON存在しない場合は、手書きのソリューションにフォールバックします。もちろん、それは実装で特別なことをしていない場合です。

于 2013-03-27T21:20:54.170 に答える