1
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>An example</title>

        <script type="text/javascript">
            function User(id) {
                this.id = id;
            };
            var bob = new User(32);

            var jack = new User(bob.id); 
            jack.id = 100;   // Set a breakpoint here, but it does not stop here
            alert('end of test' + jack.id);
        </script>
    </head>
    <body>

    </body>
</html>

顺便说一句,断点在 chrome 中正常工作。

我很困惑......这应该是一个非常简单的例子。这是 Firefox 的错误吗?

谢谢!

4

2 回答 2

1

确实,我也复制了它。似乎是一个错误。

但是有一些注意事项:

  1. 通常,建议像您正在执行的操作一样直接最小化 JavaScript 的执行,但在页面加载后推迟执行。例如,您可以将所有内容包装在一个名为的函数中init,然后将addEventListener/attachListener用于load事件(或 write <body onload="init()">)。在 HTML 中执行 JS as-you-go 会减慢页面的渲染速度;所有的 JS 都必须被解析和执行,因为它可能会动态添加一些 HTML 元素,这会改变页面上 HTML 的呈现。因此,请避免以这种方式将计算量大且冗长的脚本添加到页面中。

  2. 您还可以将代码包装在所谓的 IIFE(立即调用函数表达式)中:

     <script type="text/javascript">
     (function () {
         function User(id) {
             this.id = id;
         };
         var bob = new User(32);
    
         var jack = new User(bob.id); 
         jack.id = 100;   // Set a breakpoint here, but it does not stop here
         alert('end of test' + jack.id);
     })();
     </script>
    

    在这种情况下,Firebug 会正确执行断点。

  3. 请注意,在 Firebug 的代码清单中,第 13 行和第 14 行未标记为绿色。这是来自 Firebug 的信息,如果你把它放在这一行,就不会遇到断点。在大多数情况下,这意味着该行中没有 JavaScript(例如:HTML、空行、注释等),但有时这是由于 Firebug 中的错误。

于 2013-03-08T22:51:28.413 回答
1

看起来像萤火虫的虫子。在最后一条语句之前添加新行似乎可以解决问题。

于 2013-03-08T06:17:54.650 回答