2017-08-10 5 views
1

値フォーマッタサービスのテストを書いているうちに、Number.prototype.toLocaleString("sv-SE")について奇妙なことがあることに気付きました。Number.prototype.toLocaleString( "sv-SE")が返す値を正しくアサートする方法は?

let myValue = (100000).toLocaleString("sv-SE"); 
 

 
console.log(typeof myValue); 
 
console.log(myValue); 
 
console.log(myValue === "100 000"); // false, why?

私は、最後のログ文がtrueを返すことを期待しています。しかし、それはなぜですか?

+1

その文字は[U + 00A0(NO-BREAKスペース)](http://www.fileformat.info/info/ unicode/char/00a0/index.htm)。通常のスペース文字ではありません([U + 0020](http://www.fileformat.info/info/unicode/char/0020/index.htm))。 – Phylogenesis

+0

そうです、ちょうど正しいスペース文字を使用する必要があります。あなたはこれを答えに入れませんか? –

答えて

2

私のコメントで述べたように、「スペース文字」は実際にはU+00A0 (NO-BREAK SPACE)です。この文字は通常のスペースのように見えますが、行末のワードラップアルゴリズムには適用されません。

次のコードは、期待どおりに動作:

let myValue = (100000).toLocaleString("sv-SE"); 
 

 
console.log(typeof myValue); 
 
console.log(myValue); 
 
console.log(myValue === "100\u00a0000");

関連する問題