0

コードが機能しなくなったときに、コードでこの問題を見つけるのにしばらく時間がかかりました。

console.log('before var');
var lastReview = ''
    newReview;
console.log('after var');

lastReview = ''構文エラーであると思われるコンマはありませんが、Chrome インスペクタと Firebug の両方がコンソールに何も報告しません。次のコードconsole.logは実行されません。

コンソールでスニペットを直接実行すると、Chrome は実際にエラーを報告しますが、実際のページが実行されたときは報告しません。Firefox はどのような場合でもエラーを報告しません。

開発ツールがこの種の単純な問題を報告しないのはなぜですか?

4

2 に答える 2

2

(構文) エラーはありません。このコードは有効な JavaScript です。rules に従って、JS はセミコロンを挿入します。

console.log('before var');
var lastReview = ''; <-- here
    newReview;
console.log('after var');

newReview;無意味ではありますが、有効なステートメントになります。

構文エラーはありませんが、未定義の変数が原因で、このコードでも実行時エラーがスローされます (newReview以前に宣言されていなかったと仮定します)。

于 2013-04-04T18:13:11.070 に答える
1

セミコロンがない場合でも自動的に挿入されるため、コードに構文エラーはありません。

これについて詳しくは、ECMAScript 言語仕様の自動セミコロン挿入の規則セクションを参照してください。

あなたの例では、これ:

var lastReview = ''

になります:

var lastReview = '';
于 2013-04-04T18:13:08.720 に答える