ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript変数を文字列に変換する方法

JavaScript変数を文字列に変換する方法

青灯夜游
青灯夜游オリジナル
2021-06-18 15:30:196148ブラウズ

JS 変数を文字列に変換する方法: 1. "value.toString()" ステートメントを使用します。toString() は、JS 値 (null と未定義を除く) を文字列に変換できます; 2. "" を使用します。 "value" ステートメント; 3. "String(value)" ステートメントを使用します。

JavaScript変数を文字列に変換する方法

このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。

変数を文字列に変換する JavaScript の 3 つのメソッドは次のとおりです:

  • value.toString()
  • "" value
  • String(value)

value が null または未定義の場合、最初のメソッドは機能しません。方法 2 と方法 3 は基本的に同じです。

"" value: 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() をコンストラクターとして使用することは一般的ではないため、文字列の変換にのみ使用してください。

<span style="color: #ff0000"><strong>「」value</strong></span>String(value) の微妙な違い

"" valueString(value) は、値を文字列に変換できます。どのように行うのでしょうか?実際、結果は同じですが、方法が少し異なります。

プリミティブの基本型を文字列に変換します

どちらのメソッドも内部関数を使用しますToString()プリミティブを変換します基本型は文字列に変換されます。 ToString()この関数は ECMAScript 5.1 (§9.8) で定義されていますが、直接使用できないため、内部関数と呼ばれます。次の表は、ToString() 関数がプリミティブ型を文字列に変換する方法を示しています。

#未定義「未定義」##nullBooleanNumber##文字列変換する必要はありません

将Object转换为字符串

转换为字符串之前,两种方法都会先将Object转换为primitive。不同的是,""+value使用内部函数ToPrimitive(Number) (除了date类型),而String(value)使用内部函数ToPrimitive(String)

  • ToPrimitive(Number) : 先调用obj.valueOf ,若结果为primitive则返回;否则再调用obj.toString() ,若结果为primitive则返回;否则返回TypeError。
  • ToPrimitive(String) : 与ToPrimitive(Number)类似,只是先调用obj.toString() ,后调用obj.valueOf()

可以通过以下示例了解区别,obj如下:

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

它们的结果相同

""+valueString(value)虽然不同,但是我们很少能感觉到。因为,大多数object使用默认的valueOf() ,它返回对象本身:

> var x = {}
> x.valueOf() === x
true

由于valueOf()返回值并非primitive,因此ToPrimitive(Number)会跳过valueOf() ,而返回toString()的返回值。这样,与ToPrimitive(String)的返回值就一样了。

当object是Boolean、Number或者String实例时,valueOf()将返回primitive。这就意味着两者的计算过程是这样的:

  • ToPrimitive(Number) valueOf()返回primitive值,然后使用ToString()转换为字符串。
  • ToPrimitive(String) : toString()通过ToString()函数将primitive值转换为字符串。

可知,虽然计算过程不同,但是它们的结果是一样的。

结论

那么你该选择哪种方法呢?如果你可以确保value值不是null和undefined,那么不妨使用value.toString() 。否则,你只能使用""+valueString(value) ,它们基本上是一样的。

【相关推荐:javascript学习教程

Parameters Result
「null」
"true" または "false"
数値を文字列に変換します。例: "1.765"

以上がJavaScript変数を文字列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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