2

私は自分のサイトで多くの JavaScript を使用していますが、もちろんコードのビルド時に問題が発生したり、バグが発生したりすることがあります。ページでバグが発生し、すべてのスクリプトが機能しなくなることがあります。これは、ページの読み込み中にバグが発生した場合に特に当てはまります。また、いくつかのバグが原因で、ページが他のスクリプトを実行するのを止めないように見えることもあります。

そして、時々 Web 上のいくつかのページを見て、F12 を押すと、そのページに 5 ~ 10 個の JavaScript バグがあるにもかかわらず、一見問題なく動作し続けていることがわかります。

一部の javascript エラーは致命的であり、他のエラーは回復可能ですか?

ありがとう。

4

2 に答える 2

4

ブロックがロード時<script>にブラウザによって評価されると、コードは解析されるだけでなく実際に実行されます。したがって、そのプロセス中に例外が発生すると、スクリプト ブロック全体が中止されます。後続のコードが、そのようなスクリプトによって確立されたはずのグローバル シンボルに依存しているが、エラーが原因ではない場合、他のスクリプトも失敗する可能性があります。

ただし、一部のイベントの処理中にエラーが発生すると、そのイベント ループが中止されるだけです。したがって、「クリック」ハンドラーのコード エラーは、何かがクリックされたときに発生するはずのいくつかのことが単純に発生しないことを意味します。それ以外の場合、ページは引き続き正常に機能します。

于 2012-06-13T16:55:51.893 に答える
3

解析エラーは、ブロック内であっても致命的です。これは、 の末尾や、実際にはエラーの後の何かtry..catchを確実に見つけることができないためです。try

他のエラーはキャッチ可能です。try..catchブロック内でcatch、 はエラーに関する情報を受け取ります。エラー状態の後、そのブロック内の残りのコードは信頼できず、安全でない可能性があります。ただし、他の<script>タグは分離されているため、問題なく実行できます。<script>タグが次のことを暗示していると想像できます。

<script>
    try { // implied
        // your code here
    } catch(e) {throw e;} // implied
</script>
于 2012-06-13T16:56:39.897 に答える