在JavaScript前端的case语句中添加代码隐藏函数调用会导致显着减慢,即使被解决的情况不是具有该函数的情况。
case 'A'
如果我发表评论'B'
并测试'C'
或case 'A'
应用程序工作非常快,那么我添加'B'
的那一刻就会减慢整个过程,即使我和#39;我只测试'C'
或try {
// code that can throw
}
catch (Exception e) {
throw (e instanceof RuntimeException) ? (RuntimeException) e : new RuntimeException(e);
}
答案 0 :(得分:2)
首先,Javascript不允许单个case
中的多个案例值。实际发生的是它将('B' || 'C')
评估为表达式,等于'B'
。所以case ('B' || 'C'):
实际上只匹配'B'
。要匹配'B'
或'C'
,您必须使用两个case
语句:
case 'B': case 'C':
它们可以如图所示位于一条线上,也可以位于不同的线上。由于它们之间没有break
,case 'B'
将落入case 'C'
。如果tab
变量等于'B'
或'C'
,则下面的代码将会运行,正如您可能想要的那样。
就缓慢而言,我希望<%=func1() %>
是你的问题。您在ASP代码中调用辅助函数func1
,以便将数据传递给Javascript。在最初加载页面之前,在Javascript代码甚至开始运行之前,ASP在服务器上运行;这就是为什么它会减慢代码的速度,无论case
语句是否运行。
我建议检查该功能,以找出原因缓慢或重构代码,这样您就不需要使用该功能将该数据从ASP传递到页面;例如,如果案例实际运行,您可以使用AJAX从服务器下载它;那么它根本不应该减缓其他情况。