JavaScript數(shù)據(jù)類型轉換——轉換成Number類型

一:使用Number()函數(shù)

字符串轉數(shù)字

  • 如果是純數(shù)字的字符串歉胶,則直接將其轉換為數(shù)字
    var str1 = "123";
    var res1 = Number(str1);
    console.log(res1); // 123
    console.log(typeof  res1); // number
  • 如果字符串中有非數(shù)字的內(nèi)容冕象,則轉換為NaN
    var str2 = "123ab";
    var res2 = Number(str2);
    console.log(res2); // NaN
  • 注意點:挖坑,數(shù)字字符串內(nèi)有 + - 是正負號碘赖,會正常轉換,而不是NaN(詳情見運算符章節(jié))
  var nums = "+100";
  var reses = Number(nums);
  console.log(reses);  //100
  var nums2 = "-100";
  reses2 = Number(nums2);
  console.log(reses2);  //-100
  • 如果字符串是一個空串或者是一個全是空格的字符串仲器,則轉換為0
    var str3 = "";
    var res3 = Number(str3);
    console.log(res3); // 0

    var str4 = "    ";
    var res4 = Number(str4);
    console.log(res4); // 0

布爾轉數(shù)字

  • true轉換為1, false轉換為0
    var flag1 = true;
    var flag2 = false;
    // true --> 1
    var res3 = Number(flag1);
    console.log(res3);

    // false --> 0
    var res4 = Number(flag2);
    console.log(res4);

null轉數(shù)字

  • null轉換為0
   // null --> 0
    var n = null;
    var res5 = Number(n);
    console.log(res5);  //0
    var res05 = Number(null);
    console.log(res05);  //0

undefined轉數(shù)字

  • undefined轉換為NaN
    // NaN -- > Not a Number
    var u = undefined;
    var res6 = Number(u);
    console.log(res6);
  • 總結:
    • 空字符串/false/null --> 0
    • 不僅僅包含數(shù)字的字符串和undefined --> 轉換為NaN
    • 其它的正常轉換

二:利用 + - 算數(shù)運算符來轉換

  • 在需要轉換的類型前面加上+加號或者-減號即可
  • 注意點:
    +加號不會改變數(shù)據(jù)的正負性
    -減號會改變數(shù)據(jù)的正負性
    var str1 = "123";
    var str2 = "3.14";
    var flag1 = true;
    var flag2 = false;
    var n = null;
    var u = undefined;

    var res1 = +str1;
    console.log(res1);  //123
    console.log(typeof res1);

    var res2 = -str1;
    console.log(res2);  //-123
    console.log(typeof res2);

    var res3 = +str2;
    console.log(res3);  //3.14

    var res4 = +flag1;
    console.log(res4);  //1

    var res5 = +flag2;
    console.log(res5);  //0

    var res6 = +n;
    console.log(res6);  //0

    var res7 = +u;
    console.log(res7);  //NaN

三:通過parseInt()/parseFloat()函數(shù)轉換

  • 通過Number函數(shù)或者通過+-運算符轉換, 都不能轉換復雜的字符串,如"12px"
    var str1 = "12px";
    var res1 = Number(str1); // NaN
    console.log(res1);
    var res2 = +str1; // NaN
    console.log(res2);
  • 所以就有第三種轉換的方式, 通過parseInt()/parseFloat()函數(shù)提取數(shù)字
    • parseInt: 只能提取整數(shù)
    • 如果第一位不是有效數(shù)字, 什么都提取不到, 會返回NaN
    • 第一個參數(shù)是要轉換的字符串仰冠,第二個參數(shù)是要轉換的進制
     var str1 = "3.14px";
     var res1 = parseInt(str1);
     console.log(res1);  //3
     console.log(typeof res1); //number
    
    • parseFloat:可以提取小數(shù)
    • 如果第一位不是有效數(shù)字, 什么都提取不到
    • 不支持第二個參數(shù)乏冀,只能解析10進制數(shù)
    • 如果解析的內(nèi)容里只有整數(shù),解析成整數(shù)
    var res2 = parseFloat(str1);
    console.log(res2);  //3.14
    console.log(typeof res2); //number
    
  • parseInt/parseFloat , 會從左至右的提取, 一旦被中斷后續(xù)的就提取不到了
    var str = "12px666px";
    var res1 = parseInt(str);
    console.log(res1);  //12
  • 對于parseFloat來說, 只能提取一個.遇到第二個.或者非數(shù)字結束
    var str = "3.14.15px";
    var res1 = parseFloat(str);
    console.log(res1);  //3.14
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末洋只,一起剝皮案震驚了整個濱河市辆沦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌识虚,老刑警劉巖肢扯,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異担锤,居然都是意外死亡蔚晨,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門肛循,熙熙樓的掌柜王于貴愁眉苦臉地迎上來铭腕,“玉大人,你說我怎么就攤上這事多糠±巯希” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵夹孔,是天一觀的道長被盈。 經(jīng)常有香客問我,道長搭伤,這世上最難降的妖魔是什么只怎? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮怜俐,結果婚禮上身堡,老公的妹妹穿的比我還像新娘。我一直安慰自己佑菩,他們只是感情好,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布裁赠。 她就那樣靜靜地躺著殿漠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪佩捞。 梳的紋絲不亂的頭發(fā)上绞幌,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天,我揣著相機與錄音一忱,去河邊找鬼莲蜘。 笑死谭确,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的票渠。 我是一名探鬼主播逐哈,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼问顷!你這毒婦竟也來了昂秃?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤杜窄,失蹤者是張志新(化名)和其女友劉穎肠骆,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體塞耕,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡蚀腿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了扫外。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片莉钙。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖畏浆,靈堂內(nèi)的尸體忽然破棺而出胆胰,到底是詐尸還是另有隱情,我是刑警寧澤刻获,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布蜀涨,位于F島的核電站,受9級特大地震影響蝎毡,放射性物質(zhì)發(fā)生泄漏厚柳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一沐兵、第九天 我趴在偏房一處隱蔽的房頂上張望别垮。 院中可真熱鬧,春花似錦扎谎、人聲如沸碳想。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽胧奔。三九已至,卻和暖如春预吆,著一層夾襖步出監(jiān)牢的瞬間龙填,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留岩遗,地道東北人扇商。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像宿礁,于是被迫代替她去往敵國和親案铺。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354