如何在对象文字中做一些错误处理?
至少我希望它是这样工作的:如何处理对象文字中的错误处理?
window.App={
Variables:{
"views_data":
try{
json_parse(Drupal.settings.royal)
}
catch(e){
JSON.parse(Drupal.settings.royal)
}
}
}
如何在对象文字中做一些错误处理?
至少我希望它是这样工作的:如何处理对象文字中的错误处理?
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;
}())
}
}
谢谢......你说的很对;-P – Jurudocs 2013-03-27 21:25:03
由于try{...}catch(err){...}
是控制结构,你可以把它添加到对象文本在JavaScript中。根据你想在哪里存储Drupal.settings.royal
,你可以写你的对象是这样的:
window.App = {
Variables: {
views_data: null // this is optional
}
};
现在作为你的目标是ready',你可以尝试添加解析JSON它:
try{
window.App.Variables.views_data = json_parse(Drupal.settings.royal);
}catch(err){
window.App.Variables.views_data = JSON.parse(Drupal.settings.royal);
}
很好,很干净。
好的。但是这个问题在**对象文字中明确提出**。 – Lix 2013-03-27 21:23:23
@Lix你说得对 - 对不起,没有看到。 – 2013-03-27 21:25:15
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
不存在。当然,那就是如果你在实现中没有做任何特别的事情。
@Lix感谢您的编辑......所以这不是一个noob问题; -P? – Jurudocs 2013-03-27 21:26:34
不客气@jur!不管你的问题是否是“小白鼠”,取决于谁在阅读它。无论如何,我的编辑主要是将代码格式化得更好一些,而当我处理代码时,我删除了与实际问题无关的任何内容。当一年左右有人遇到这篇文章时,你是一个新的JS开发者的事实将是无关紧要的。看看[在这个meta post](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts)了解更多关于什么是在帖子中被认为是“噪音”。 – Lix 2013-03-27 21:29:51