Javascript 简化这个IF结构
你能帮我简化这个IF结构吗?这是一个类似javascript的节点,但它是专有的,所以请忽略db.execute stuff:) 将此理解为:Javascript 简化这个IF结构,javascript,Javascript,你能帮我简化这个IF结构吗?这是一个类似javascript的节点,但它是专有的,所以请忽略db.execute stuff:) 将此理解为: 如果不是运输部 试着从计费部门取发货部门 如果不是运输部门,而是邮政编码 尝试从邮政编码中获取运输部门 如果仍然不是运输部门 失败 将此理解为: 如果不是运输部 试着从计费部门取发货部门 如果不是运输部门,而是邮政编码 尝试从邮政编码中获取运输部门 如果仍然不是运输部门 失败 您不需要shipError变量,只需在末尾再次测
- 如果不是运输部
- 试着从计费部门取发货部门
- 如果不是运输部门,而是邮政编码
- 尝试从邮政编码中获取运输部门
- 如果仍然不是运输部门
- 失败
- 如果不是运输部
- 试着从计费部门取发货部门
- 如果不是运输部门,而是邮政编码
- 尝试从邮政编码中获取运输部门
- 如果仍然不是运输部门
- 失败
shipError
变量,只需在末尾再次测试if(!Shipping.Division)
。这可以消除变量声明(显然),但也可以删除仅用于设置shipError=true
的if
和else
。结果是这样的:
if(!("Division" in Shipping)) {
Shipping.Division = Billing.Division;
if(!Shipping.Division) {
if(Shipping.PostalCode) {
Shipping.Division = Db.ExecuteScalar("SELECT statement here",
Shipping.PostalCode);
}
}
if(!Shipping.Division){
Errors.push({Code : "SHIPPINGDIVISION", Message : "Shipping State Required"});
Shipping.Division = "";
}
}
您不需要
shipError
变量,只需在末尾再次测试if(!Shipping.Division)
。这可以消除变量声明(显然),但也可以删除仅用于设置shipError=true
的if
和else
。结果是这样的:
if(!("Division" in Shipping)) {
Shipping.Division = Billing.Division;
if(!Shipping.Division) {
if(Shipping.PostalCode) {
Shipping.Division = Db.ExecuteScalar("SELECT statement here",
Shipping.PostalCode);
}
}
if(!Shipping.Division){
Errors.push({Code : "SHIPPINGDIVISION", Message : "Shipping State Required"});
Shipping.Division = "";
}
}
你试过使用谷歌闭包吗 它是一个javascript优化器。尝试一下,看看它是如何优化代码的,如果您喜欢某些优化,可以在代码中使用它 从页面上 JavaScript优化器 闭包编译器将JavaScript编译成紧凑的高性能代码。编译器删除死代码,重写并最小化剩下的代码,以便快速下载和运行。它还检查语法、变量引用和类型,并警告常见的JavaScript陷阱。这些检查和优化可以帮助您编写出bug更少、更易于维护的应用程序。您可以将编译器与闭包检查器一起使用,闭包检查器是一个Firebug扩展,它使调试模糊代码几乎与调试人类可读的源代码一样简单 链接 您的代码已优化
if(!("Division" in Shipping)) {
var shipError = !1;
Shipping.Division = Billing.Division;
if(!Shipping.Division) {
Shipping.PostalCode ? (Shipping.Division = Db.ExecuteScalar("SELECT Code from Location.Division D JOIN Location.PostalCode P ON DivisionId = D.ID AND PostalCode=?", Shipping.PostalCode), Shipping.Division || (shipError = !0)) : shipError = !0
}
if(shipError) {
Errors.push({Code:"SHIPPINGDIVISION", Message:"Shipping State Required"}), Shipping.Division = ""
}
}
;
你试过使用谷歌闭包吗 它是一个javascript优化器。尝试一下,看看它是如何优化代码的,如果您喜欢某些优化,可以在代码中使用它 从页面上 JavaScript优化器 闭包编译器将JavaScript编译成紧凑的高性能代码。编译器删除死代码,重写并最小化剩下的代码,以便快速下载和运行。它还检查语法、变量引用和类型,并警告常见的JavaScript陷阱。这些检查和优化可以帮助您编写出bug更少、更易于维护的应用程序。您可以将编译器与闭包检查器一起使用,闭包检查器是一个Firebug扩展,它使调试模糊代码几乎与调试人类可读的源代码一样简单 链接 您的代码已优化
if(!("Division" in Shipping)) {
var shipError = !1;
Shipping.Division = Billing.Division;
if(!Shipping.Division) {
Shipping.PostalCode ? (Shipping.Division = Db.ExecuteScalar("SELECT Code from Location.Division D JOIN Location.PostalCode P ON DivisionId = D.ID AND PostalCode=?", Shipping.PostalCode), Shipping.Division || (shipError = !0)) : shipError = !0
}
if(shipError) {
Errors.push({Code:"SHIPPINGDIVISION", Message:"Shipping State Required"}), Shipping.Division = ""
}
}
;
你为什么要简化它?它是否工作得不好,或者是否存在任何模糊的bug、性能问题?没有更简单的方法来实现它。为什么要简化它?它是否工作不正常,或者是否存在任何模糊的错误、性能问题?没有更简单的方法来解决。这很好,但您还需要尝试将
Shipping.Division
设置为Billing.Division
如果(!Shipping.Division&!(Shipping.Division=Billing.Division)&&Shipping.PostalCode){…}将更准确地反映原始算法…@Tikhon我在这里给出一个示例,而不是编写生产代码。@nnn此示例仅包括if
逻辑,而不包括预处理、后处理和中间处理。够清楚吗?:)但它不包括所有的if
逻辑,因为(正如蒂肯也指出的)在设置Shipping.Division
到Billing.Division
之后,还有一个额外的if
。我相信如果您将第一个if
替换为我之前评论中的一个,那么您的回答将涵盖整个过程,包括中间处理。这很好,但您还需要尝试将Shipping.Division
设置为Billing.Division
if(!Shipping.Division&!(Shipping.Division=Billing.Division)&&Shipping.PostalCode){…}将更准确地反映原始算法…@Tikhon我在这里给出一个示例,而不是编写生产代码。@nnn此示例仅包括if
逻辑,而不是预处理、后处理和中间处理。是否足够清楚?:)但它不包括所有的if
逻辑,因为(正如蒂肯也指出的)在设置Shipping.Division
到Billing.Division
之后,还有一个额外的if
。我相信,如果您将第一个if
替换为我之前评论中的一个,那么您的回答将涵盖整个问题,包括处理之间的问题。不要认为自动优化的代码是最好的。@deceze和me给出的答案同样简短,但都完全消除了shipError
变量,而且都更易于阅读,因此更易于维护。问题是关于“简化”,但是在谷歌关闭版本的中间的那行,开始<代码> SpabPin。PASSCODE?<代码>是愚蠢的-是的,它做同样的事情;不要认为自动优化的代码是最好的。@deceze和me给出的答案同样简短,但都完全消除了shipError
变量,而且都更易于阅读,因此更易于维护。问题是关于“简化”,但是在谷歌关闭版本中间的那一行,开始<代码> SpabPin。