javascript:如果情况下主要减速

时间:2014-10-21 09:56:04

标签: javascript

我有一个非常简单的代码来生成一个表。

然而,当我添加3行时,它变得非常慢。 任何人都有任何想法?

代码:

for (var i=0; i<=noofRows; i++){
  var rg = genguid();
  for (var j=1; j<=noofbackuprows; j++){
  to+='<tr>';
  to+='<td>'  + prefix + rg + '-' + j;      
  to+='</td>';      
  if (j<3){var vval = 10000};
  if (j=3){var vval = 5000};
  if (j>4){var vval = 2500};
  to+='<td>'  + vval + '</td>';          
  to+='</tr>';      
    }
}

侵权行:

  if (j<3){var vval = 10000};
  if (j=3){var vval = 5000};
  if (j>4){var vval = 2500};

如果我删除侵权行,它的效果很好。 发生了什么事?

2 个答案:

答案 0 :(得分:3)

您目前拥有的两个问题:

if (j<3){var vval = 10000};
if (j=3){var vval = 5000};
if (j>4){var vval = 2500};

首先,j = 3将值3分配给j。它不会检查j是否等于3。要解决此问题,请将其更改为=====

if (j === 3) { var vval = 5000; }

这就是为什么你的应用程序变慢了,因为你的for循环在一个循环中陷入困境,因为某个点j总是等于3

其次,您应该使用else if,否则即使第一个语句符合要求,也会检查所有三个if语句:

if (j < 3) { var vval = 10000 }
else if (j === 3) { var vval = 5000 }
else if (j > 4) { var vval = 2500 }

另请注意,在if语句的大括号后面加分号是不必要的,所以我也删除了这些分号。

答案 1 :(得分:1)

原因是因为在循环中你永远设置j=3。我很惊讶这不会完全破坏浏览器。

使用相等运算符==或严格相等运算符===