Javascript 如何处理对象文本中的错误处理?

Javascript 如何处理对象文本中的错误处理?,javascript,Javascript,如何在对象文本中进行一些错误处理? 至少我希望它能像这样工作: window.App={ Variables:{ "views_data": try{ json_parse(Drupal.settings.royal) } catch(e){ JSON.parse(Drupal.settings.royal) } } } 您可以使用立即调用的函数: window.App = {

如何在对象文本中进行一些错误处理?
至少我希望它能像这样工作:

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

您可以使用立即调用的函数:

window.App = {
    Variables: {
        views_data: (function(){
            var data;
            try{
                data = json_parse(Drupal.settings.royal)
            }
            catch(e){
                data = {}
            }
            return data;
        }())
    }
}

您可以使用立即调用的函数:

window.App = {
    Variables: {
        views_data: (function(){
            var data;
            try{
                data = json_parse(Drupal.settings.royal)
            }
            catch(e){
                data = {}
            }
            return data;
        }())
    }
}
由于
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);
}
漂亮干净。

因为
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);
}
漂亮干净。

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\u parse
有什么特别之处,否则我实际上建议您以另一种方式执行此操作——使用浏览器的
json.parse
。本机实现将比您自己编写的任何东西都要快。如果
JSON
不存在,那么回到手写解决方案。当然,如果您在实现中没有做任何特殊的事情,就可以使用立即调用的函数表达式

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

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

2) 除非您的
json\u parse
有什么特别之处,否则我实际上建议您以另一种方式执行此操作——使用浏览器的
json.parse
。本机实现将比您自己编写的任何东西都要快。如果
JSON
不存在,那么回到手写解决方案。当然,如果您在实现中没有做任何特殊的事情,就可以这样做。

是的。但是这个问题是在对象文字中特别提出的,是的。但是这个问题在对象文本中特别说明。@Lix感谢您的编辑…所以这不是一个noob问题-P?不客气@jur!你的问题是否是“noob”取决于谁在真正阅读它。在任何情况下,我的编辑主要是为了更好地格式化代码,当我在编辑的时候,我删除了任何与手头实际问题无关的内容。当有人在一年左右的时间里看到这篇文章时,你是一名新的JS开发人员这一事实将无关紧要。请进一步了解帖子中的“噪音”。@Lix感谢您的编辑……所以这不是一个noob问题-P?不客气@jur!你的问题是否是“noob”取决于谁在真正阅读它。在任何情况下,我的编辑主要是为了更好地格式化代码,当我在编辑的时候,我删除了任何与手头实际问题无关的内容。当有人在一年左右的时间里看到这篇文章时,你是一名新的JS开发人员这一事实将无关紧要。让我们来了解一下,在帖子中什么是“噪音”。