大家應該都知道,對於JavaScript,有3種不同方法可以將變數轉換為字串。這篇文章將詳細介紹這些方法,並比較他們的優劣。本文主要和大家介紹關於Javascript中將變數轉換為字串的三種方法,這三種方法分別是:value.toString()、"" + value和String(value),文中透過範例程式碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧,希望能幫助大家。
將變數轉換為字串的3種方法如下:
value.toString()
> 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)都可以將value轉換為字串,它們是如何做到的呢?事實上,它們雖然結果相同,但是方法稍有差別。 將primitive基本型別轉換為字串兩種方法都使用內部函數ToString()將primitive基本型別轉換為字串。 ToString()函數在ECMAScript 5.1 (§9.8)中定義了,但是並不能直接使用,因此稱為內部函數。下面的表格顯示了ToString()函數如何將primitive基本型別轉換為字串:
結果 | |
---|---|
##undefined | |
#null | |
#Boolean |
#將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
它們的結果相同
> 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值轉換為字串。
結論相關推薦:############JavaScript依照本機時間把Date物件轉換為字串的方法toLocaleString()############Javascript將變數轉換為字串方法介紹############php 將時間差轉換為字串提示實例詳解######以上是Javascript將變數轉換為字串程式碼分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!