teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

think49さんの

2017/12/16 23:35

投稿

miyabi-sun
miyabi-sun

スコア21461

answer CHANGED
@@ -3,10 +3,37 @@
3
3
 
4
4
  ---
5
5
 
6
- JavaScriptでもそうですが、大多数の言語は全角スペース構文エラーになります。
6
+ JavaScriptでもそうですが、大多数の言語は全角スペースが含まれていると構文エラーになります。
7
7
  全角スペースの色を変える設定や薄く記号で知らせてくれる機能があると思うので設定してください。
8
8
  えっ、ない? AtomかVS Codeあたりを使って下さい。
9
9
 
10
+ 【追記】 think49さんの情報提供
11
+
12
+ > ES3 当時から全角スペースはエラーにならない仕様です。
13
+ ECMAScript では「Unicode空白文字」を扱える為、全角空白も許容される仕様となっています。
14
+ ただし、IE8- はこの仕様に準拠していなかった為、コード中に全角空白を含むとエラーになりました。
15
+ その為、「JavaScript では全角空白を使えない」という誤解が広まっているのだと思います。
16
+ 現在のモダンブラウザ(IE9+ もOK)では全角空白を問題なく扱えると思います。
17
+
18
+ というわけで調査しました。
19
+ 確かにJavaScriptの仕様では、全角スペースもホワイトスペースとして取り扱われます。
20
+ 参考サイト: [【JavaScript】全角スペースは使ってよい(仕様では) - SOFTELメモ](https://www.softel.co.jp/blogs/tech/archives/5280)
21
+
22
+ Node.jsで下記のコードを読み込ませても正常動作し、3という数値が出力される事を確認しました。
23
+
24
+ ```JavaScript
25
+ for (var i = 0; i < 10; i++) {
26
+  if (i === 3) {
27
+   console.log(i); // 行末全角スペース
28
+  }
29
+ }
30
+ ```
31
+
32
+ > コードを修正したところOperaとSafariでは動作しました。IE7では動作しませんでした。OSは関係あるのかわかりませんがVISTAです。
33
+
34
+ たまたまサポート対象外の古いブラウザが構文エラーになって、
35
+ 私の勘違いにハマって解決した形になったようです(´・ω・`)
36
+
10
37
  ---
11
38
 
12
39
  また、質問文のコードはインデントが綺麗に整っておらず、