成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JS的String()、toString()、valueOf()的一些隱秘特性

姘擱『 / 2771人閱讀

摘要:默認(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()方法。但nullundefined值沒有這個(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)換的值是不是nullundefined的情況下,還可以使用轉(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)換nullundefined值,可以說是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

相關(guān)文章

  • 深入js隱式類型轉(zhuǎn)換

    摘要:結(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í)際中的情況來看...

    tomato 評(píng)論0 收藏0
  • 經(jīng)常被面試官問到JavaScript數(shù)據(jù)類型知識(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)...

    codergarden 評(píng)論0 收藏0
  • 關(guān)于原生js一些研究

    摘要:這個(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...

    wind3110991 評(píng)論0 收藏0
  • 【Step-By-Step】一周面試題 && 答案匯總 / 01

    摘要:構(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è)腳印,量變引...

    xiaolinbang 評(píng)論0 收藏0
  • JavaScript類型轉(zhuǎn)換迷糊事兒

    摘要:下面分幾步來簡(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í)~ 弱類型帶來的那些讓人迷糊的事 弱類型...

    harriszh 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<