2011-08-01 5 views
1

<a>要素があり、コードを実行してリダイレクトしないと考えられています。これらの2つのJavaScript式の違いは何ですか?

ここでは文句を言わない、私は同じ効果を持つべきであると考えているコードの2つの例がありますが、:

これは動作します:

<a href="#" onclick="alert('Works'); return false;" /> 

これはしません:

<a href="#" onclick="return function() {alert('don't Work'); return false;};" /> 

Shouldn彼らはどちらも同じですか? 2番目の試行の式が評価されず、無名関数が呼び出され、falseが返されますか?

ありがとうございます!

答えて

6

2番目の例では、関数を定義して返します。決してそれを呼びません。

onclick="return function() {alert('don\'t Work'); return false;}();" 

これを呼び出すと(引用符で囲まれたエラーを修正しても)同じ効果が得られます。

+0

+1私は彼が2番目のかっこを忘れていたことに気付きませんでした。 –

1

いいえ、これは'don'tが早すぎて文字列を終了するため、有効なjavascriptではありません。 don'tdoes notで置き換え、何が起こるかをご覧ください。

そして、Quentinsがあなたが関数を呼んでいないという事実について答えてください!

1

2行目は関数オブジェクトを返し、実行しません。 代わりに、次の実行:

<a href="#" onclick="alert('Works'); return false;" >first link</a> 
<a href="#" onclick="function x() {alert('don\'t Work'); return false;}; return x();" >second link</a> 

はまた、あなたは 『動作しない』に '文字をエスケープする必要があります。

関連する問題