JSでは変数を文字列に変換します.
3497 ワード
言葉の細かいところを調べてもいいです.あまり本当のことは必要ないですが、少しも知らないとまずいです.原文:Coverting a value to string in JavaScript 翻訳者:Fundbug 可読性を保証するために、本文は直訳ではなく意訳を採用する.また、この著作権は元の作者に帰属し、翻訳は学習にのみ使用されます.
JavaScriptには、変数を文字列に変換できる3つの方法があります.このブログでは、これらの方法を詳しく紹介し、彼らの優劣を比較します.
3つの方法
変数を文字列に変換する3つの方法は以下の通りです. value.toString() "+value " String valueがnullまたはundefinedの場合、第1の方法はだめです.方法2と方法3は基本的に同じです.""+value:valueを空の文字列に加算すると文字列に変換できます.この方法は、開発者の意図を理解するのが難しいかもしれません.しかし、この点については、人によっては、この方法が好きな人がいます. String(value):String関数を用いてvalueを文字列に変換する方法は非常に明確である.しかし、Stringには2つの異なる使い方があり、紛らわしいです.特にJava開発者にとって.String()と演算子newが一緒に構成関数として使用されると、新しく作成されたStringオブジェクトに戻ります.new演算子を用いずにStering()を呼び出すと、valueだけを元の文字列に変換します.この両者は非常に違っています.
"+valueとString(value)の微妙な違い
"+valueとString(value)は、valueを文字列に変換できますが、どうやってできますか?実は、結果は同じですが、方法はちょっと違います.
prmitive基本タイプを文字列に変換します.
両方の方法は内部関数ToString()を用いてprmitive基本タイプを文字列に変換する.ToString()関数はECMAScript 5.1(§9.8)で定義されていますが、直接使用できないので、内部関数と呼ばれています.以下の表はToString関数がどのようにprmitive基本タイプを文字列に変換するかを示しています.
パラメータ
結果
数字を文字列に変換します.例えば、
String
変換なし
Objectを文字列に変換
文字列に変換する前に、両方の方法でObjectをprmitiveに変換します.異なるのは、「」+valueは内部関数ToPrimitive(Number)を使用しており(dateタイプを除く)、Stringは内部関数ToPrimitiveを使用している. ToPrimitive(Number):まずObj.valueOfを呼び出し、結果がprmitiveであれば戻ります.もしobj.toStringを呼び出したら()、結果がprmitiveなら戻ってきます.そうでないとType Errに戻ります. ToPrimitive(String):ToPrimitive(Number)と似ていますが、Obj.toString()を先に呼び出して、Obj.valueOf()を呼び出します. 以下の例によって区別が分かります.
"+valueはStringとは違いますが、私たちはあまり感じられません.なぜなら、ほとんどのobjectはデフォルトのvalueOf()を使って、対象自体に戻ります.
objectがBoolean、NumberまたはStringの例である場合、valueOf()はprmitiveに戻ります.これは両者の計算過程がこうであることを意味する. ToPrimitive:valueOf()はprmitive値を返し、ToString()を使って文字列に変換する. ToPrimitive:toString()はToString()関数によりprmitive値を文字列に変換する. 計算過程は違っていますが、その結果は同じであることが分かります.
結論
どの方法を選ぶべきですか?value値がnullとundefinedではないことを確認できれば、value.toString()を使用してもいいです.そうでなければ、「」+valueとStringしか使えません.基本的には同じです.
参照 JavaScript values:not everthing is an object What is{}+{}in JavaScript? String concation in JavaScript JavaScript Stringオブジェクト 著作権声明:転載する時、作者のFunebugと本文の住所を明記してください.https://blog.fundebug.com/201...
JavaScriptには、変数を文字列に変換できる3つの方法があります.このブログでは、これらの方法を詳しく紹介し、彼らの優劣を比較します.
3つの方法
変数を文字列に変換する3つの方法は以下の通りです.
> String("Fundebug") === new String("Fundebug")
false
> typeof String("Fundebug")
'string'
> String("Fundebug") instanceof String
false
> typeof new String("Fundebug")
'object'
> new String("Fundebug") instanceof String
true
実際にはString()を構造関数として使うことはあまりないので、文字列を変換するためにそれだけを使うといいです."+valueとString(value)の微妙な違い
"+valueとString(value)は、valueを文字列に変換できますが、どうやってできますか?実は、結果は同じですが、方法はちょっと違います.
prmitive基本タイプを文字列に変換します.
両方の方法は内部関数ToString()を用いてprmitive基本タイプを文字列に変換する.ToString()関数はECMAScript 5.1(§9.8)で定義されていますが、直接使用できないので、内部関数と呼ばれています.以下の表はToString関数がどのようにprmitive基本タイプを文字列に変換するかを示しています.
パラメータ
結果
undefined
"undefined"
null
"null"
ボロア"true"
または"false"
Number数字を文字列に変換します.例えば、
"1.765"
.String
変換なし
Objectを文字列に変換
文字列に変換する前に、両方の方法でObjectをprmitiveに変換します.異なるのは、「」+valueは内部関数ToPrimitive(Number)を使用しており(dateタイプを除く)、Stringは内部関数ToPrimitiveを使用している.
var obj = {
valueOf: function()
{
console.log("valueOf");
return {};
},
toString: function()
{
console.log("toString");
return {};
}
};
呼び出しの結果:> "" + obj
valueOf
toString
TypeError: Cannot convert object to primitive value
> String(obj)
toString
valueOf
TypeError: Cannot convert object to primitive value
それらの結果は同じです."+valueはStringとは違いますが、私たちはあまり感じられません.なぜなら、ほとんどのobjectはデフォルトのvalueOf()を使って、対象自体に戻ります.
> var x = {}
> x.valueOf() === x
true
valueOf()の戻り値はprmitiveではないので、ToPrimitive(Number)はvalueOf()をスキップしてtoStering()の戻り値を返します.このように、ToPrimitive(String)との戻り値は同じです.objectがBoolean、NumberまたはStringの例である場合、valueOf()はprmitiveに戻ります.これは両者の計算過程がこうであることを意味する.
結論
どの方法を選ぶべきですか?value値がnullとundefinedではないことを確認できれば、value.toString()を使用してもいいです.そうでなければ、「」+valueとStringしか使えません.基本的には同じです.
参照