JavaScript でオブジェクトを文字列に変換したいのですが、どのメソッドを使用すればよいか混乱しています。以下に簡単な例を示します。
最初の方法
/\d+/g.toString()
2番目の方法
/\d+/g + ''
これら2つに違いはありますか?
JavaScript でオブジェクトを文字列に変換したいのですが、どのメソッドを使用すればよいか混乱しています。以下に簡単な例を示します。
/\d+/g.toString()
/\d+/g + ''
これら2つに違いはありますか?
2 番目の方法も追加で動作しnull/undefined
、それほど明確ではありません。
a.toString() //Fails with null/undefined
a + "" //Works with anything
また+a
、より厳密なparseFloat
.
いいえ、違いはありません。オブジェクトを文字列に変換する必要がある場合、toString
関数が呼び出されます。
より正確には、toPrimitive
ヒント「文字列」を使用した変換が適用され、オブジェクトの ECMAScript 仕様で定義されています。
null または undefined を渡すと (仕様を参照)、追加スキームのみが機能することに注意してください。これは、冗長性の低下に伴いtoString
、JavaScript で明示的に呼び出されることがめったにない理由を説明しています。暗黙的な変換は言語の慣例の重要な部分であるため、文字列の前にを付け+
て数値に変換することがよくあるように (つまり+'33'
) 、このメソッドを使用するのは完全に正常です。
どちらも同じです。2 番目のものも を呼び出しますtoString()
。