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>

ところで、ブレークポイントはクロムで正常に機能します。

私は混乱しています...これは非常に単純な例です。これは Firefox のバグですか?

ありがとう!

4

2 に答える 2

1

firebug のバグのように見えます。最後のステートメントの前に新しい行を追加すると、問題が解決するようです。

于 2013-03-08T06:17:54.650 に答える
1

確かに私も再現しました。バグのようです。

ただし、いくつかの注意事項:

  1. 一般に、JavaScript の実行を直接実行するのと同じように最小限に抑えることをお勧めしますが、ページの読み込み後に延期することをお勧めします。たとえば、呼び出された関数ですべてをラップし、イベントに/をinit使用(または書き込み) できます。HTML で JS をそのまま実行すると、ページのレンダリングが遅くなります。すべての JS を解析して実行する必要があります。これは、一部の HTML 要素が動的に追加される可能性があり、ページの後半で HTML のレンダリングが変更される可能性があるためです。そのため、この方法でページに追加される計算量の多い長いスクリプトは避けてください。addEventListenerattachListenerload<body onload="init()">

  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 に答える