js變數轉為字串的方法:1、使用「value.toString()」語句,toString()可以將js值(null和undefined除外)轉換為字串;2、使用「" " value」語句;3、使用「String(value)」語句。
本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。
javascript將變數轉換為字串的3種方法如下:
#value.toString()
"" value
String(value)
當value為null或undefined時,第1種方法就不行了。而方法2和方法3基本上是一樣的。
"" value:
將value與空字串相加,即可轉換為字串。這種方法其實是一種稍微晦澀的技巧,可能會讓別人難於理解開發者的意圖。不過,這一點見仁見智,有些人偏愛這種方法。
String(value): 這種方法非常清晰:使用String()
函數將value轉換為字串。不過,String()
有兩種不同用法,容易混淆,尤其對Java開發者來說。當String()
和運算子new一起作為建構函式使用時,它傳回一個新建立的String物件;當不用new運算子呼叫String()
時,它只把value轉換成原始的字串。這兩者是非常不同的:
> 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)
都可以將value轉換為字串,它們是如何做到的呢?事實上,它們雖然結果相同,但是方法稍有差別。
將primitive基本型別轉換為字串
#兩種方法都使用內部函數ToString()
將primitive基本型別轉換為字串。 ToString()
函數在ECMAScript 5.1 (§9.8)中定義了,但是並不能直接使用,因此稱為內部函數。下面的表格顯示了ToString()
函數如何將primitive基本型別轉換為字串:
參數 | #結果 |
---|
undefined | "undefined" |
null | "null" |
Boolean | "true"或 "false" |
Number | 將數字轉換為字串,例如: "1.765" |
String | 無須轉換 |
##将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中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡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