国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

Javascript中將變量轉換為字符串的三種方法

2024-05-06 16:39:49
字體:
來源:轉載
供稿:網友

前言

大家應該都知道,對于JavaScript,有3種不同方法可以將變量轉換為字符串。這篇文章將詳細介紹這些方法,并比較他們的優劣。下面話不多說了,來一起看看詳細的介紹吧。

3種方法

將變量轉換為字符串的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轉換成原始的字符串。這兩者是非常不同的:

js;">> String("Fundebug") === new String("Fundebug")false> typeof String("Fundebug")'string'> String("Fundebug") instanceof Stringfalse> typeof new String("Fundebug")'object'> new String("Fundebug") instanceof Stringtrue

事實上,將String()作為構造函數使用并不常見,因此僅使用它來轉換字符串就好了。

“”+value與String(value)的細微差別

""+valueString(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 {}; }};

調用結果:

> "" + objvalueOftoStringTypeError: Cannot convert object to primitive value> String(obj)toStringvalueOfTypeError: Cannot convert object to primitive value

它們的結果相同

""+valueString(value)雖然不同,但是我們很少能感覺到。因為,大多數object使用默認的valueOf() ,它返回對象本身:

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

由于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) ,它們基本上是一樣的。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。

參考

原文: Converting a value to string in JavaScript

譯者: Fundebug


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁化县| 霸州市| 鄂托克旗| 大洼县| 石河子市| 博野县| 同仁县| 东方市| 屏山县| 修水县| 柳江县| 香格里拉县| 门源| 滁州市| 九台市| 宁强县| 高雄市| 三明市| 正安县| 光泽县| 房山区| 称多县| 亳州市| 民和| 汉寿县| 任丘市| 平舆县| 剑阁县| 自贡市| 梅州市| 江都市| 弥勒县| 济宁市| 中江县| 夏邑县| 禄丰县| 金乡县| 大竹县| 蓬溪县| 英德市| 津南区|