摘要:默認情況下,方法以十進制格式返回數值的字符串表示。注意,默認的沒有參數的輸出值與指定基數時的輸出值相同。但是,在上,他們兩個表現出了截然不同的形式,在對一個對象類型進行時,直接返回原對象,而則返回。
toString()方法
要把一個值轉換為一個字符串,最常用的就是,使用幾乎每個值都有的toString()方法,這個方法唯一要做的就是返回相應值的字符串表現。
數值、布爾值、對象和字符串值(沒錯,每個字符串也都有一個toString()方法,該方法返回字符串的一個副本)都有toString()方法。但null和undefined值沒有這個方法。因此在對一個變量進行了toString()后,如果變量為null或者undefined的時候就會報錯。
多數情況下,調用toString()方法不必傳遞參數。但是,在調用數值的toString()方法時,可以傳遞一個參數:輸出數值的基數。默認情況下,toString()方法以十進制格式返回數值的字符串表示。而通過傳遞基數,toString()可以輸出以二進制、八進制、十六進制,乃至其他任意有效進制格式表示的字符串值。
var num = 10; // "10" alert(num.toString()); // "1010" alert(num.toString(2)); // "12" alert(num.toString(8)); // "10" alert(num.toString(10)); // "a" alert(num.toString(16));
通過這個例子可以看出,通過指定基數,toString()方法會改變輸出的值。而數值10根據基數的不同,可以在輸出時被轉換為不同的數值格式。注意,默認的(沒有參數的)輸出值與指定基數10時的輸出值相同。
valueOf()方法說實話這個方法存在感很低,在JS中對數據進行字符串轉型,通常都用toString()方法,或者直接在變量后面加上空字符串。valueOf()方法的返回值通常與toString()都是一樣的。但是,在Object上,他們兩個表現出了截然不同的形式,在對一個對象類型(Object、Array)進行valueOf()時,valueOf()直接返回原對象,而toString()則返回[object Object]。在《JavaScript高級程序設計(第三版)》中,作者說valueOf()返回與toString()相同的值,即對Array調用valueOf()返回字符串表現形式,我在多個現代瀏覽器中(Chrome、Egde)和IE8文檔模式下測試均返回原數組對象。所以看到這里的讀者要注意了,書中部分內容到現在可能并不準確了。
var a = { "a":"123", "b": "456" }; // Object {a: "123", b: "456"} a.valueOf() // [object object] a.toString()
對于數組也一樣
var b = [1,2,3,45,6]; // (5) [1, 2, 3, 45, 6] b.valueOf() // 1,2,3,45,6 b.toString()String()方法
在不知道要轉換的值是不是null或undefined的情況下,還可以使用轉型函數String(),這個函數能夠將任何類型的值轉換為字符串。String()函數遵循下列轉換規則:
如果值有toString()方法,則調用該方法(沒有參數)并返回相應的結果;
如果值是null,則返回"null";
如果值是undefined,則返回"undefined"。
toString()與String()的區別就在于String()還能轉換null和undefined值,可以說是toString()的增強版。在開發中直接使用String()似乎更好,這樣能避免潛在的轉換風險。
文章首發于我的微信公眾號,關注可獲得每次最新推送
《JavaScript高級程序設計》筆記之一
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/83904.html
摘要:結合實際中的情況來看,有意或無意中涉及到隱式類型轉換的情況還是很多的。此外當進行某些操作時,變量可以進行類型轉換,我們主動進行的就是顯式類型轉換,另一種就是隱式類型轉換了。 前言 相信剛開始了解js的時候,都會遇到 2 ==2,但 1+2 == 1+2為false的情況。這時候應該會是一臉懵逼的狀態,不得不感慨js弱類型的靈活讓人發指,隱式類型轉換就是這么猝不及防。結合實際中的情況來看...
摘要:中的強制轉換規則面試官中強制類型轉換是一個非常易出現的點,知道強制轉換時候的規則嗎注規則最好配合下面什么時候發生轉換使用這些規則看效果更佳。調用方法用來把對象轉換成原始類型的值數值字符串和布爾值。 前言 showImg(https://segmentfault.com/img/bVbu4Fb?w=940&h=400);之前面試了幾個開發者,他們確實做過不少項目,能力也是不錯的,但是發現...
摘要:這個屬性本身又是一個類型的對象,原型對象都包含一個指向構造函數的指針,而每一個實例也都包含一個指向原型對象內部的指針。 前陣子忙于準備CET-6,沒時間更新文章,之后大概一個月將忙于準備期末考,也應該不會更新了,今天趁周末有時間再更新一篇最近研究的一些東西吧。 callee和caller function inner(){ console.log(arguments.calle...
摘要:構造函數返回值是或,這種情況下指向的是返回的對象。并執行了構造函數中的方法如果函數沒有返回其他對象,那么指向這個新對象,否則指向構造函數中返回的對象。對于文檔來說應當是唯一的。的值意味著其不可能是基本數據類型。 關于【Step-By-Step】 不積跬步無以至千里。 Step-By-Step (點擊進入項目) 是我于 2019-05-20 開始的一個項目,項目愿景:一步一個腳印,量變引...
摘要:下面分幾步來簡單的探探不同類型的轉換吧以下的內容,都可以從權威指南中找到。其他值轉換成在編寫代碼的過程中,幾乎不用考慮它的取值類型。核心內置類,會嘗試先于可以理解為對象優先轉換成數字例外的是,利用的是轉換。 最近在寫公司的登錄注冊模塊,遇到類型不同相比較的時候,就心驚膽戰,每次都要用瀏覽器來驗證一下,決定亂七八糟的隨便寫一下,方便日后自己回顧知識~ 弱類型帶來的那些讓人迷糊的事 弱類型...
閱讀 2894·2021-11-23 09:51
閱讀 3404·2021-11-22 09:34
閱讀 3305·2021-10-27 14:14
閱讀 1504·2019-08-30 15:55
閱讀 3345·2019-08-30 15:54
閱讀 1066·2019-08-30 15:52
閱讀 1888·2019-08-30 12:46
閱讀 2845·2019-08-29 16:11