ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript は変数を文字列コード共有に変換します

JavaScript は変数を文字列コード共有に変換します

小云云
小云云オリジナル
2018-02-08 11:07:331404ブラウズ

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"数値数値を文字列に変換します。例: "1.765"文字列変換する必要はありませんオブジェクト 両方のメソッド文字列 に変換する前に、まずオブジェクトをプリミティブに変換します。違いは、""+value は内部関数 ToPrimitive(Number) (日付型を除く) を使用するのに対し、String(value) は内部関数 ToPrimitive(String) を使用することです。 ToPrimitive(Number): 最初に obj.valueOf を呼び出し、結果がプリミティブの場合は返します。それ以外の場合は、再度 obj.toString() を呼び出し、結果がプリミティブの場合は戻り、それ以外の場合は TypeError を返します。 ToPrimitive(String): ToPrimitive(Number) と似ていますが、最初に obj.toString() が呼び出され、次に obj.valueOf() が呼び出される点が異なります。 次の例を通して違いを理解することができます。obj は次のとおりです: 呼び出し結果: それらの結果は同じです""+value と String(value) は異なりますが、めったに違いはありませんそれを感じる。なぜなら、ほとんどのオブジェクトはオブジェクト自体を返すデフォルトの 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。