2011-08-24 6 views

答えて

20

はい、非同期のものを除きます。 http://jsfiddle.net/pimvdb/R4dfJ/3/

DIY:

var a = 1, b, c; 

setTimeout(function() { 
    b = 2; 
    console.log('Running', a, b, c); 
}, 1000); 

somerandomthingy; 

c = 3; 

Uncaught ReferenceError: somerandomthingy is not defined

Running 1 2 undefined

ので:

  • abが設定されている
  • c
  • タイムアウトを設定されていない、まだ
  • を発生

「onclickはまだ機能していますか?」というように、ハンドラが実行されているコード(つまり、エラーの前に)それはします。エラーコードの後に​​置かれた場合は、ハンドラーをバインドしないので、イベントは機能しません。

+0

したがって、非同期操作には影響しません。 Kewlio。 –

+0

複数のファイルから呼び出されたjavascriptのより複雑な設定はどうですか? – Kevin

+2

@Kevin:http://jsfiddle.net/TGBYV/を参照してください。基本的にはファイル単位で同じことです。魅力的な、ありがとう。 – pimvdb

0

実行が停止すると思います。コードの行が途切れた後で警告を設定すると、警告には到達せず、実行が停止すると信じられます。しかし、asynch XmlHtttpRequestsにも同じことが当てはまるかどうかはわかりません。

1

これはやっていることに多少依存します。通常は実行が中止され、コンソールでスマートブラウザを使用している場合は、エラーメッセージが記録されます(また、これらのエラーメッセージが役立つ場合もありますが、常にそうとは限りません)。

UNCAUGHT EXCEPTION: SYNTAX ERROR, UNRECOGNIZED EXPRESSION: #

enter image description here

時には、しかし、ものはただ静かにあなたがjQueryのまたは別のライブラリを使用している場合は特に、エラーや警告なしで失敗します。 WebKitとFirefoxで何か問題なくうまくいったが、IEで黙って失敗して、何か無効なHTMLをDOMに挿入しようとしていたjQueryの.append()メソッドのPEBCAKバグに遭遇した。他のすべてが正常に機能し、エラーも警告も、何もなかったので、IEでは1つの機能だけが「行きません」ということは腹が立っていました。

2

エラーを超えてコードは実行されません。

function inAFunction(){ 
alert("one"); 
x = y; 
alert("two"); 
} 
inAFunction(); 

あなたはあなたが何も表示されません "1" ではなく "2"

var a = { 
    b : c 
} 
alert("here"); 

が表示されます "1" ではなく "2"

alert("one"); 
x = y; 
alert("two"); 

が表示されます。

関連する問題