JS 変数を文字列に変換する方法: 1. "value.toString()" ステートメントを使用します。toString() は、JS 値 (null と未定義を除く) を文字列に変換できます; 2. "" を使用します。 "value" ステートメント; 3. "String(value)" ステートメントを使用します。
このチュートリアルの動作環境: 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)
の微妙な違い
"" value
と String(value)
は、値を文字列に変換できます。どのように行うのでしょうか?実際、結果は同じですが、方法が少し異なります。
プリミティブの基本型を文字列に変換します
どちらのメソッドも内部関数を使用しますToString()
プリミティブを変換します基本型は文字列に変換されます。 ToString()
この関数は ECMAScript 5.1 (§9.8) で定義されていますが、直接使用できないため、内部関数と呼ばれます。次の表は、ToString()
関数がプリミティブ型を文字列に変換する方法を示しています。
Parameters | Result |
---|
#未定義 | 「未定義」 |
##null「null」 | |
Boolean"true" または "false" | |
Number数値を文字列に変換します。例: "1.765" | | ##文字列
変換する必要はありません | | 将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
ログイン後にコピー
它们的结果相同
""+value
与String(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()
。否则,你只能使用""+value
和String(value)
,它们基本上是一样的。
【相关推荐:javascript学习教程】
以上がJavaScript変数を文字列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
-
2023-04-26 17:59:18
-
2023-04-26 17:47:48
-
2023-04-26 17:41:42
-
2023-04-26 17:37:05
-
2023-04-26 17:31:25
-
2023-04-26 17:27:32
-
2023-04-25 19:57:58
-
2023-04-25 19:53:11
-
2023-04-25 19:49:11
-
2023-04-25 19:41:54