如何在对象文字中进行错误处理?
至少我希望它能像这样工作:
window.App={
Variables:{
"views_data":
try{
json_parse(Drupal.settings.royal)
}
catch(e){
JSON.parse(Drupal.settings.royal)
}
}
}
答案 0 :(得分:4)
您可以使用立即调用的函数:
window.App = {
Variables: {
views_data: (function(){
var data;
try{
data = json_parse(Drupal.settings.royal)
}
catch(e){
data = {}
}
return data;
}())
}
}
答案 1 :(得分: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);
}
很干净。
答案 2 :(得分: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
不存在,则返回手写解决方案。当然,如果您在实施过程中没有做任何特别的事情,那就是这样。