2013-04-17 14 views

答えて

8

空のJavascriptファイルとJavascriptファイルの違いは、;と同じです。

何もありません:

eval(""); 
//undefined 
eval(";"); 
//undefined 

を参照してくださいhttp://www.ecma-international.org/ecma-262/5.1/#sec-7.9.1

、トークンの 入力ストリームの最後に遭遇したとされるパーサができず、プログラムが左から右に解析されるよう 入力トークンストリームを1つの完全なECMAScriptプログラムとして構文解析します。 入力の最後にセミコロンが自動的に挿入されます。 ストリーム。

したがって、空のファイルは無効なプログラムになり、セミコロンが自動的に挿入され、セミコロンだけのプログラムに等しくなります。

ちょうど、これはJSONをproovesさらに別のケースであることを私に起こったのJavaScriptのサブセットではありません。

JSON.parse(""); 
//SyntaxError: Unexpected end of input 
eval(""); 
//undefined 

:空のJSONが有効でないP

6

javascript:は、JavaScriptを評価するために使用できる疑似プロトコルを示します。だから、1つ後のセミコロンは、何もしない空の式である;を含むスクリプトに等しい。 javascript:それは何もしない空のスクリプトの後に何もありません。いずれの場合も、戻り値はundefinedです。これは重要です。javascript: URLが何かを返すと、ページの内容は返されたものに置き換えられます。

ただし、javascript: urls にはすべてを使用しないでください。これらは廃止されました。リンクの非jsバージョンがない場合は、onclickと有用なhrefまたは#を使用してください。この場合、イベントのpreventDefaultを忘れないでください。

+0

あなたの答えをありがとう、私はあなたが 'javascript:'が返すものと置き換えられていないページの内容を修正したいだけです。 'javascript:10'または' javascript: 'google.com'それは何もしません。 – dhblah

+0

また、javascriptは使用しないでください。誰かが 'falseを返す 'ことを忘れてしまい、onclickや関数で例外がスローされてしまい、わかりにくくなります。バグ。 – dhblah

+1

http://jsfiddle.net/ThiefMaster/MJ4nb/ - 式の結果と置き換えられます。あなたが 'preventDefault()'を早期に実行すると、例外がスローされても問題にはなりません(無条件に実行する必要がある場合、通常はイベントハンドラの最初の行で行います) – ThiefMaster

1

javascript:は、別のページへのリンクではなくJavaScriptの命令があることを示しています。 ;はjavascript文です。しかし、;は何も実行しないので、これはノーオペレーションです。

0

javascript:;で、追加javascript:ですセミコロン。それとは別に、違いはありません。

関連する問題