我有一个简单的Javascript switch
声明。我在Firefox中调试它(使用Firebug)。
Firebug的Javascript调试器的一个好处是有效的Javascript行由绿线编号表示。
我遇到了一个非常奇怪的问题。
我的Javascript代码仅对case
语句中的前两个switch
块有效。我添加了屏幕截图,以证明 case
块本身有效,因为当我在前两个位置中放置任意case
块时,它们会成功运行。
以下是case
块的第1个订单:
特别是,注意到第三个块开头的绿线编号停止。这不仅仅是一个视觉问题;当我使用调试器并到达第三个块时,Javascript 死亡。到达前两个case
块时,代码会成功运行。
以下是case
块的第2个订单 - 除了块的顺序相同:
请注意,唯一的区别是case
块的顺序。这次,前两个case
块成功执行(到达时) - 包括第一个屏幕截图中失败的case
块。但是当到达第三个case
块时,Javascript 会死(即使它在第一个屏幕截图中显示的位置时成功了)。
以下是case
块的第3个订单 - 但您明白了这一点:
在这种情况下同样。第三个case
阻止导致Javascript死于只是因为它不在前两个位置之一。
尽管我想质疑我的理智,但必须有一个解释。救命啊!
答案 0 :(得分:2)
这种事情发生的通常原因是一个不可打印的角色已经设法进入源代码。十几个类似Unicode的空格字符之一,等等。通常在SO上询问这个问题时,这就是最终找到的答案。 (也就是说,通常问题出现在代码根本不工作,而不是你所描述的。)
如果你删除了交换机的所有文本,那么(道歉)从头开始重新输入,我怀疑你会解决问题。或者,如果您可以访问vi
或vim
,则可以突出显示不同寻常的字符。