ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript は変数を文字列コード共有に変換します
JavaScript では、変数を文字列に変換する 3 つの異なる方法があることを誰もが知っているはずです。この記事では、これらの方法を詳しく紹介し、メリットとデメリットを比較します。この記事では、JavaScript で変数を文字列に変換する 3 つのメソッド、value.toString()、"" + value、String(value) を主に紹介します。必要な方は、編集者をフォローして一緒に学んでください。皆さんのお役に立てれば幸いです。
変数を文字列に変換する3つのメソッドは次のとおりです:
value.toString()
"" + value
String(value)
valueがnullまたは未定義の場合、最初の方法は機能しません。方法 2 と方法 3 は基本的に同じです。
""+value: 空の文字列に値を追加して文字列に変換します。この方法は実際には少しわかりにくいテクニックであり、開発者の意図を他の人が理解するのが難しい場合があります。ただし、これは意見の問題であり、この方法を好む人もいます。
String(value): このメソッドは非常に明確です。String() 関数を使用して値を文字列に変換します。ただし、String() には 2 つの異なる用途があり、特に Java 開発者にとっては混乱しやすいです。 String() を演算子 new を使用してコンストラクターとして使用すると、新しく作成された String オブジェクトが返されます。new 演算子を使用せずに String() を呼び出した場合は、値が元の文字列に変換されるだけです。この 2 つは大きく異なります:
> 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)」は両方とも値を文字列に変換できます。実際、結果は同じですが、方法が少し異なります。
プリミティブを文字列に変換する
どちらのメソッドも内部関数 ToString() を使用して、プリミティブを文字列に変換します。 ToString() 関数は ECMAScript 5.1 (§9.8) で定義されていますが、直接使用できないため、内部関数と呼ばれます。次の表は、ToString() 関数がプリミティブ型を文字列に変換する方法を示しています。 「ヌル」
"true" または "false" | |
---|---|
文字列 | |
オブジェクト 両方のメソッド文字列 | |
ToPrimitive(Number): 最初に obj.valueOf を呼び出し、結果がプリミティブの場合は返します。それ以外の場合は、再度 obj.toString() を呼び出し、結果がプリミティブの場合は戻り、それ以外の場合は TypeError を返します。 | |
ToPrimitive(String): ToPrimitive(Number) と似ていますが、最初に obj.toString() が呼び出され、次に obj.valueOf() が呼び出される点が異なります。 | |
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 | それらの結果は同じです
> var x = {} > x.valueOf() === x true
valueOf() の戻り値はプリミティブではないため、ToPrimitive(Number) は valueOf() をスキップして toString() の戻り値を返します。 。このように、ToPrimitive(String) の戻り値は同じになります。
オブジェクトがブール値、数値、または文字列インスタンスの場合、valueOf() はプリミティブを返します。これは、2 つの計算プロセスが次のようになることを意味します:
ToPrimitive(Number): valueOf() はプリミティブ値を返し、ToString() を使用してそれを文字列に変換します。
ToPrimitive(String) : toString() は、ToString() 関数を通じてプリミティブ値を文字列に変換します。
計算プロセスは異なりますが、結果は同じであることがわかります。
結論
それでは、どの方法を選択する必要がありますか?値が null または未定義でないことを確認できる場合は、value.toString() を使用します。それ以外の場合は、基本的に同じである ""+value と String(value) のみを使用できます。
関連する推奨事項:
現地時間に基づいて Date オブジェクトを文字列に変換するための JavaScript メソッド toLocaleString()
変数を文字列に変換するための JavaScript メソッドの概要
php 時差を文字列プロンプトに変換する 詳細な例
以上がJavaScript は変数を文字列コード共有に変換しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。