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