我编写了一个函数,该函数将我发送到网页的位掩码值转换,然后使用它向用户显示传感器的位置和数量。这是非常基本的,它接受一个数字,并使用按位数学来检查 a1
的位置,然后将该位置数字从数组存储到要返回的字符串中。
但是当我给出值时出现错误:
bit
>= 30 和TEMPmax
= 9
当我使用这些值时,我得到:
Max execution steps exceeded (200) | Exception of type 'Jint.Native.JsException' was thrown.
但是如果我改变TEMPmax = 5
and bit
= 30,我不会得到任何错误。我将此用作临时修复,但从代码中您可以看到它最多可以有八个不同的位置。
我不明白为什么我超过了执行步骤,for()
循环只发生了 9 次,if
循环中的东西,可能我认为还有其他事情发生(请启发我)。
问题:
- 为什么我会超出我的最大执行步骤?
- 我该如何解决这个问题或使其高效?
- 如何确定代码中发生了多少个执行步骤?
这是我写的代码(自我解释):
var all = ["pos1", "pos2", "pos3", "pos4", "pos5", "pos6", "pos7", "pos8"]; //temp sensors possible
var TEMPmax = 9;
var text = ""; //value to return
var bit = fields.get('TotalTempsensors', 0); // none
if(bit > 1){
for(var i = 0; i < TEMPmax; i++){
if((bit & (1 << i))){
text += all[i - 1];
text += ",";
}
}
}
else{
text = "ERROR";
}
return text;