【JavaScript】全角スペースは使ってよい(仕様では)
問題
JavaScriptに全角スペースが入っているのを見つけたのですが、エラーも何も問題が発生していないです。
そんなもんなんですか。
//↓ifの後ろに全角スペースが!
if (a > 0) {
}
答え
JavaScriptの仕様(ECMAScript 5.1の仕様)によると、以下の文字がホワイトスペースとして定義されている。
Table 2 — Whitespace Characters Code Unit Value Name Formal Name \u0009Tab <TAB> \u000BVertical
Tab<VT> \u000CForm
Feed<FF> \u0020Space <SP> \u00A0No-break
space<#x0a> \uFEFF
Other
category “Zs”Byte
Order Mark
Any
other Unicode “space separator”<BOM>
<USP>
UnicodeのカテゴリZsに属する文字は全て空白文字として扱われるとのことで、該当する文字は以下の通り。
| Character | Name |
|---|---|
| U+0020 | SPACE |
| U+00A0 | NO-BREAK SPACE |
| U+1680 | OGHAM SPACE MARK |
| U+2000 | EN QUAD |
| U+2001 | EM QUAD |
| U+2002 | EN SPACE |
| U+2003 | EM SPACE |
| U+2004 | THREE-PER-EM SPACE |
| U+2005 | FOUR-PER-EM SPACE |
| U+2006 | SIX-PER-EM SPACE |
| U+2007 | FIGURE SPACE |
| U+2008 | PUNCTUATION SPACE |
| U+2009 | THIN SPACE |
| U+200A | HAIR SPACE |
| U+202F | NARROW NO-BREAK SPACE |
| U+205F | MEDIUM MATHEMATICAL SPACE |
| U+3000 | IDEOGRAPHIC SPACE |
全角スペース (U+3000) もカテゴリZsに含まれる。
つまり、半角スペースと同様に空白文字として扱われる。
※ 使いたいわけではない!