【问题标题】:switch statement in a function called by a loop循环调用的函数中的 switch 语句
【发布时间】:2012-03-15 13:08:30
【问题描述】:

我在循环中使用函数时遇到问题,该函数包含一个 switch 语句,它会分解代码(字面意思),因为 switch 语句包含中断。

function presentation(input, fixedid)
{
    switch(fixedid)
    {
        case 1:
            output = namesplice(input);
            break;
        case 6:
            output = str_remain(input, '0123456789');
            break;
        case 8:
            output = str_replace(' ', '', strtoupper(input));
            break;
        case 11:
            output = str_remain(input, '0123456789');
            break;
        default:
            output = input;
            break;
    }

    return output;
}

for (i=1;i<=cellCount;i++)
{
    label = $('#cell0_'+ i).html();

    for (j=1;j<=count(targetcolumns);j++)
    {
        if (jQuery.inArray(strtolower(label), sub[targetcolumns[j] + '_label']) >= 0)
        {
            result = $('#content'+ i).html();
            result = presentation(result, j);
            $('#result'+ j).append(result);
        }
    }
}

这段代码出错了:result = presentation(result, j);

其余代码的作用并不重要,您唯一应该知道的是它在两个循环内。 该函数被调用,然后跳出第一个循环,重新开始,从而创建一个无休止的循环。

如何在不破坏其余代码的情况下使用该函数?

【问题讨论】:

  • It go wrong wrong 是什么意思? breaks out of the first loop 在这里是什么意思?怎么了?应该发生什么? countstrtolower 和所有其他函数是否实际定义?看起来有点像 PHP 和 JavaScript 的混合体。
  • 在使用该函数时,附加到id为result1的div上的结果是一个无休止的同值链。所有其他功能都已定义并可以正常工作。我使用 PHPjs,因此与 PHP 相似。当我直接调用函数表示时,不在循环中它工作正常。
  • 一个“无休止”的链意味着你有一个无限循环,但是代码会挂起并且永远不会显示值。运行代码时会发生什么,有多少个值?
  • 在 jsfiddle 上做一个例子时,我发现问题出在 str_replace 函数上,在某些组合中它似乎打破了循环。

标签: javascript jquery


【解决方案1】:

不,它没有。

函数中的break语句只跳出switch,不影响调用函数的代码的程序流程。

您在循环中可能遇到的任何问题(从问题中不清楚)都不是来自在函数内部使用break

【讨论】:

  • 问题来自 str_replace 函数,太急于使用新的东西!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多