質問: ### 前提・実現したいこと JavaScriptの教則本の例題通りに打ち込んでいますが、自分では見つけられない間違いがあるので指摘お願いします。 「リセットボタンを押すとテキストエリア内の文字が消える」 を実現したいです。 ### 発生している問題・エラーメッセージ リセットできない。 ### 該当のソースコード Lesson2 Sample Script dog ### 該当のソースコード ``` ``` ### 試したこと 課題に対してアプローチしたことを記載してください ### 補足情報(言語/FW/ツール等のバージョンなど) より詳細な情報
回答: 1, 3, 8, 10, 13, 15行目のインデントが全角スペースです。 他は特に見当たりませんでしたので、全角スペースを取り払った後に一度確認してみてください。 JavaScriptでもそうですが、大多数の言語は全角スペースが含まれていると構文エラーになります。 全角スペースの色を変える設定や薄く記号で知らせてくれる機能があると思うので設定してください。 えっ、ない? AtomかVS Codeあたりを使って下さい。 【追記】 think49さんの情報提供 > > ES3 当時から全角スペースはエラーにならない仕様です。 > > ECMAScript では「Unicode空白文字」を扱える為、全角空白も許容される仕様となっています。 > > ただし、IE8- はこの仕様に準拠していなかった為、コード中に全角空白を含むとエラーになりました。 > > その為、「JavaScript では全角空白を使えない」という誤解が広まっているのだと思います。 > > 現在のモダンブラウザ(IE9+ もOK)では全角空白を問題なく扱えると思います。 > > > というわけで調査しました。 確かにJavaScriptの仕様では、全角スペースもホワイトスペースとして取り扱われます。 参考サイト: 【JavaScript】全角スペースは使ってよい(仕様では) - SOFTELメモ Node.jsで下記のコードを読み込ませても正常動作し、3という数値が出力される事を確認しました。 ``` for (var i = 0; i < 10; i++) { if (i === 3) { console.log(i); // 行末全角スペース } } ``` > > コードを修正したところOperaとSafariでは動作しました。IE7では動作しませんでした。OSは関係あるのかわかりませんがVISTAです。 > > > たまたまサポート対象外の古いブラウザが構文エラーになって、 私の勘違いにハマって解決した形になったようです( ́・ω・`) また、質問文のコードはインデントが綺麗に整っておらず、 行の先頭からスペースが1個だったり3個だったりと悲惨な状態です。 ソースコードのインデントルールは色々派閥がありますが、ファイル内で確実に統一させて下さい。 候補は下記です。 * 半角スペース2個 * 半角スペース4個 * タブ記号 殆どのテキストエディタでは タブを押した時の挙動としてスペース2個、4個、タブ記号を挿入する設定があります。 (ソフトタブという設定で存在するでしょう) また、改行時に前の行と同じインデント幅でインデント出来る設定も存在し、 Tabキーでインデント、Shift + Tabキー等でアンインデントが出来るエディタも多くあります。 これのお陰でインデントの面倒なルールを徹底しながら、ケアレスミスで間違える事なく何百行ものコードを書けるわけです。是非。