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

資訊專(zhuān)欄INFORMATION COLUMN

《javascript高級(jí)程序設(shè)計(jì)》筆記:Number數(shù)值轉(zhuǎn)換

kid143 / 1759人閱讀

摘要:數(shù)值轉(zhuǎn)換對(duì)個(gè)人而言是非常重要的,這也是本人多帶帶拉出來(lái)總結(jié)的一個(gè)原因。在此也僅針對(duì)顯示轉(zhuǎn)換做點(diǎn)文章,隱式轉(zhuǎn)換同樣會(huì)多帶帶拉出來(lái)總結(jié)有個(gè)函數(shù)可以把非數(shù)值轉(zhuǎn)換為數(shù)值和。如果是值,和將分別被轉(zhuǎn)換為和。如果是數(shù)字值,只是簡(jiǎn)單的傳入和返回。

數(shù)值轉(zhuǎn)換對(duì)個(gè)人而言是非常重要的,這也是本人多帶帶拉出來(lái)總結(jié)的一個(gè)原因。在此也僅針對(duì)顯示轉(zhuǎn)換做點(diǎn)文章,隱式轉(zhuǎn)換同樣會(huì)多帶帶拉出來(lái)總結(jié)

有 3 個(gè)函數(shù)可以把非數(shù)值轉(zhuǎn)換為數(shù)值:Number()、parseInt()和 parseFloat()。第一個(gè)函數(shù),即轉(zhuǎn)型函數(shù) Number()可以用于任何數(shù)據(jù)類(lèi)型,而另兩個(gè)函數(shù)則專(zhuān)門(mén)用于把字符串轉(zhuǎn)換成數(shù)值

數(shù)值轉(zhuǎn)換—Number()

Number()函數(shù)的轉(zhuǎn)換規(guī)則如下。

如果是 Boolean 值,true 和 false 將分別被轉(zhuǎn)換為 1 和 0。

如果是數(shù)字值,只是簡(jiǎn)單的傳入和返回。

如果是 null 值,返回 0。

如果是 undefined,返回 NaN。

如果是字符串,遵循下列規(guī)則:

如果字符串中只包含數(shù)字(包括前面帶正號(hào)或負(fù)號(hào)的情況),則將其轉(zhuǎn)換為十進(jìn)制數(shù)值,即"1" 會(huì)變成 1,"123"會(huì)變成 123,而"011"會(huì)變成 11(注意:前導(dǎo)的零被忽略了);

如果字符串中包含有效的浮點(diǎn)格式,如"1.1",則將其轉(zhuǎn)換為對(duì)應(yīng)的浮點(diǎn)數(shù)值(忽略前導(dǎo)零);

如果字符串中包含有效的十六進(jìn)制格式,例如"0xf",則將其轉(zhuǎn)換為相同大小的十進(jìn)制整數(shù)值;

如果字符串是空的(不包含任何字符),則將其轉(zhuǎn)換為 0;

如果字符串中包含除上述格式之外的字符,則將其轉(zhuǎn)換為 NaN。

如果是對(duì)象,則調(diào)用對(duì)象的 valueOf()方法,然后依照前面的規(guī)則轉(zhuǎn)換返回的值。如果轉(zhuǎn)換的結(jié)果是 NaN,則調(diào)用對(duì)象的 toString()方法,然后再次依照前面的規(guī)則轉(zhuǎn)換返回的字符串值。

// Boolean
Number(true); // 1
Number(false); // 0

// 數(shù)字
Number(12); // 12
Number(012); // 10
Number(0xa1); // 161

// null
Number(null); // 0

// undefined
Number(undefined); // NaN

// string
Number("000011"); // 11
Number("01.1"); // 1.1
Number("0xf"); // 15
Number(""); // 0
Number("Hello world!"); // NaN

// object
Number({a:0}); // NaN toString()后只為"[object Object]"
Number([1,2]); // NaN toString()后值為“1,2”
Number([1]); // 1 toString()后值為“1”
數(shù)值轉(zhuǎn)換—parseInt()

由于 Number()函數(shù)在轉(zhuǎn)換字符串時(shí)比較復(fù)雜而且不夠合理,因此在處理整數(shù)的時(shí)候更常用的是 parseInt()函數(shù)。parseInt()函數(shù)在轉(zhuǎn)換字符串時(shí),更多的是看其是否符合數(shù)值模式

轉(zhuǎn)換規(guī)則:

從第一位**非空字符**開(kāi)始判斷(忽略字符串前面的空格)
    如果找到的第一位不是數(shù)字字符或者負(fù)號(hào),parseInt() 就會(huì)返回 NaN 
        => 用 parseInt()轉(zhuǎn)換空字符串會(huì)返回 NaN(Number()對(duì)空字符返回 0)
    如果第一個(gè)字符是數(shù)字字符,parseInt()會(huì)繼續(xù)解析第二個(gè)字符,直到解析完所有后續(xù)字符或者遇到了一個(gè)非數(shù)字字符
parseInt()能夠識(shí)別出八進(jìn)制和十六進(jìn)制
parseInt("1234blue"); // 1234
parseInt(""); // NaN
parseInt("0xA"); // 10(十六進(jìn)制數(shù))
parseInt(22.5); // 22
parseInt("070"); // 56(八進(jìn)制數(shù))
parseInt("70"); // 70(十進(jìn)制數(shù))
parseInt("0xf"); // 15(十六進(jìn)制數(shù))

你在試驗(yàn)進(jìn)制問(wèn)題的時(shí)候可能會(huì)有疑問(wèn),懷疑是不是我弄錯(cuò)了。因?yàn)?strong>在使用 parseInt()解析像八進(jìn)制字面量的字符串時(shí),ECMAScript 3 和 5 存在分歧

//ECMAScript 3 認(rèn)為是 56(八進(jìn)制),ECMAScript 5 認(rèn)為是 70(十進(jìn)制)
var num = parseInt("070");

因此,書(shū)中建議在進(jìn)行數(shù)值轉(zhuǎn)換時(shí),指明轉(zhuǎn)換的基數(shù)
指明基數(shù)后,不需要在數(shù)值前添加‘0’或‘0x’

var num1 = parseInt("10", 2); //2 (按二進(jìn)制解析)
var num2 = parseInt("10", 8); //8 (按八進(jìn)制解析)
var num3 = parseInt("10", 10); //10(按十進(jìn)制解析)
var num4 = parseInt("10", 16); //16(按十六進(jìn)制解析)
數(shù)值轉(zhuǎn)換—parseFloat()

轉(zhuǎn)換規(guī)則:

從第一位**非空字符**開(kāi)始判斷(忽略字符串前面的空格)
    如果找到的第一位不是數(shù)字字符、負(fù)號(hào)或者小數(shù)點(diǎn),parseFloat() 就會(huì)返回 NaN
        => 用 parseFloat()轉(zhuǎn)換空字符串會(huì)返回 NaN(Number()對(duì)空字符返回 0)
    如果第一個(gè)字符是三者之一,則繼續(xù)解析第二個(gè)字符,直到解析完所有后續(xù)字符或者遇到了一個(gè)非數(shù)字字符
        => 字符串中的第 一個(gè)小數(shù)點(diǎn)是有效的,而第二個(gè)小數(shù)點(diǎn)就是無(wú)效的了,因此它后面的字符串將被忽略

注意:如果字符串包含的是一個(gè)可解析為整數(shù)的數(shù)(沒(méi)有小數(shù)點(diǎn),或者小數(shù)點(diǎn)后 都是零),parseFloat()會(huì)返回整數(shù)

parseFloat("1234blue"); // 1234 (整數(shù))
parseFloat("0xA"); // 0
parseFloat("22.5"); // 22.5
parseFloat("22.34.5"); // 22.34
parseFloat("0908.5"); // 908.5
parseFloat("3.125e7"); // 31250000

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/84743.html

相關(guān)文章

  • javascript高級(jí)程序設(shè)計(jì)筆記Number類(lèi)型

    摘要:用表示法表示的數(shù)值等于前面的數(shù)值乘以的指數(shù)次冪。下面是一個(gè)使用表示法表示數(shù)值的例子等于注意浮點(diǎn)類(lèi)型精度控制的兩個(gè)方法是原型上實(shí)現(xiàn)的一個(gè)方法,其作用是對(duì)一個(gè)浮點(diǎn)數(shù)進(jìn)行四舍五入并保留固定小數(shù)位。 進(jìn)制表示 談到Number類(lèi)型,不得不提進(jìn)制(此處不做過(guò)多介紹)八進(jìn)制字面值的第一位必須是零(0),然后是八進(jìn)制數(shù)字序列(0~7)十六進(jìn)制字面值的前兩位必須是 0x,后跟任何十六進(jìn)制數(shù)字(0~9 ...

    Tychio 評(píng)論0 收藏0
  • JavaScript高級(jí)程序設(shè)計(jì)筆記:基本概念

    摘要:一寫(xiě)在前面最近重讀高級(jí)程序設(shè)計(jì),總結(jié)下來(lái),查漏補(bǔ)缺。但這種影響是單向的修改命名參數(shù)不會(huì)改變中對(duì)應(yīng)的值。這是因?yàn)閷?duì)象的長(zhǎng)度是由傳入的參數(shù)個(gè)數(shù)決定的,不是由定義函數(shù)時(shí)的命名參數(shù)的個(gè)數(shù)決定的。實(shí)際改變會(huì)同步,改變也會(huì)同步 一、寫(xiě)在前面 最近重讀《JavaScript高級(jí)程序設(shè)計(jì)》,總結(jié)下來(lái),查漏補(bǔ)缺。 二、JS簡(jiǎn)介 2.1 JS組成 ECMAscript:以ECMA-262為基礎(chǔ)的語(yǔ)言,由...

    ygyooo 評(píng)論0 收藏0
  • JavaScript高級(jí)程序設(shè)計(jì)筆記:基本概念(三)

    摘要:數(shù)據(jù)類(lèi)型中有種簡(jiǎn)單數(shù)據(jù)類(lèi)型也稱(chēng)為基本數(shù)據(jù)類(lèi)型和。因?yàn)樘厥庵当徽J(rèn)為是一個(gè)空的對(duì)象引用。盡管和有這樣的關(guān)系,但它們的用途完全不同。這樣做不僅可以體現(xiàn)作為空對(duì)象指針的慣例,而且也有助于進(jìn)一步區(qū)分和。 數(shù)據(jù)類(lèi)型 ECMAScript中有5種簡(jiǎn)單數(shù)據(jù)類(lèi)型(也稱(chēng)為基本數(shù)據(jù)類(lèi)型):undefined,null,boolean,number和string。 typeof typeof null會(huì)返回o...

    jas0n 評(píng)論0 收藏0
  • 讀書(shū)筆記(06) - 語(yǔ)法基礎(chǔ) - JavaScript高級(jí)程序設(shè)計(jì)

    摘要:寫(xiě)在開(kāi)頭本篇是小紅書(shū)筆記的第六篇,也許你會(huì)奇怪第六篇筆記才寫(xiě)語(yǔ)法基礎(chǔ),筆者是不是穿越了。可移步筆者的文章中替換方式參考文檔高級(jí)程序設(shè)計(jì)作者以樂(lè)之名本文原創(chuàng),有不當(dāng)?shù)牡胤綒g迎指出。 showImg(https://segmentfault.com/img/bVblGMc?w=600&h=400); 寫(xiě)在開(kāi)頭 本篇是小紅書(shū)筆記的第六篇,也許你會(huì)奇怪第六篇筆記才寫(xiě)語(yǔ)法基礎(chǔ),筆者是不是穿越了。...

    iOS122 評(píng)論0 收藏0
  • 003-讀書(shū)筆記-JavaScript高級(jí)程序設(shè)計(jì) 基本概念(上)

    摘要:尚未聲明的變量,只能執(zhí)行一項(xiàng)操作,就是檢測(cè)該變量的數(shù)據(jù)類(lèi)型。表示的是空對(duì)象指針,因此,使用操作符得到的結(jié)果是。 這篇筆記的內(nèi)容對(duì)應(yīng)的是《JavaScript高級(jí)程序設(shè)計(jì)(第三版)》中的第三章。 1.語(yǔ)法 1-1 區(qū)分大小寫(xiě) ECMAScript 中的一切都是區(qū)分大小寫(xiě)的。 test 和 Test 首字母不同,那么它們就不相同 typeof 和 typeOf 中間有個(gè)字母大小寫(xiě)不同...

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

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

0條評(píng)論

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