JavaScript基礎--數據類型轉換

什么是數據類型轉換

  • 將一個數據類型轉換為其他的數據類型
    • 例如: 將Number類型轉換為Boolean類型
    • 例如: 將Number類型轉換為字符串類型

將其它類型轉換為字符串

調用被轉換數據類型的toString()方法

        var num1 = 10;
        var res1 = num1.toString(); // 重點
        console.log(res1); // 10
        console.log(typeof res1); // string

        var num2 = true;
        var res2 = num2.toString(); // 重點
        console.log(res2); // true
        console.log(typeof res2); // string
  • null和undefined這兩個值沒有toString()方法洗贰,如果調用他們的方法,會報錯
        var num3 = undefined;
        var res3 = num3.toString(); // 報錯
        console.log(res3);

        var num4 = null;
        var res4 = num4.toString(); // 報錯
        console.log(res4);

        var num5 = NaN;
        var res5 = num5.toString();
        console.log(res5); // NaN
        console.log(typeof res5); // String
  • 該方法不會影響到原變量,它會將轉換的結果返回
        var num6 = 10;
        var res6 = num6.toString();
        console.log(typeof num6); // number
        console.log(typeof res6); // string
  • 數值類型的toString()洪橘,可以攜帶一個參數码荔,輸出對應進制的值(暫時不用了解, 講到進制轉換再回來看)
        var num7 = 20;
        var res7 = num7.toString(2);
        var res8 = num7.toString(8);
        var res9 = num7.toString(10);
        var res10 = num7.toString(16);
        console.log(res7); // 10100
        console.log(res8); // 24
        console.log(res9); // 20
        console.log(res10); // 14

將被轉換的數據傳入String()函數中

  • 有些值沒有toString(),這個時候可以使用String()夜涕。比如:undefined和null

將被轉換的數據和+""連接到一起

  • 任何數據和 +" " 連接到一起都會轉換為字符串
  • 內部實現原理和String()函數一樣
        var num1 = 10;
        var res1 = num1 + "";
        console.log(res1); // 10
        console.log(typeof res1); // string

        var num2 = true;
        var res2 = num2 + "";
        console.log(res2); // true
        console.log(typeof res2); // string

        var num3 = undefined;
        var res3 = num3 + "";
        console.log(res3); // undefined
        console.log(typeof res3); // string

        var num4 = null;
        var res4 = num4 + "";
        console.log(res4); // null
        console.log(typeof res4); // string

將其它類型轉換為Number類型

將被轉換的數據傳入Number()函數中

  • 字符串 --> 數字
    • 如果是純數字的字符串蒋譬,則直接將其轉換為數字
          var str1 = "123";
          var res1 = Number(str1);
          console.log(res1); // 123
          console.log(typeof  res1); // number
      
    • 如果字符串中有非數字的內容,則轉換為NaN
          var str2 = "123ab";
          var res2 = Number(str2);
          console.log(res2); // NaN
      
    • 如果字符串是一個空串或者是一個全是空格的字符串揍诽,則轉換為0
          var str3 = "";
          var res3 = Number(str3);
          console.log(res3); // 0
      
          var str4 = "    ";
          var res4 = Number(str4);
          console.log(res4); // 0
      
  • 布爾 --> 數字
    • true 轉成 1
    • false 轉成 0
          var bool1 = true;
          var res5 = Number(bool1);
          console.log(res5); // 1
      
          var bool2 = false;
          var res6 = Number(bool2);
          console.log(res6); // 0
      
    • null --> 數字 --> 0
          var str5 = null;
          var res7 = Number(str5);
          console.log(res7); // 0
      
    • undefined --> 數字 --> NaN
         var str6 = undefined;
         var res8 = Number(str6);
         console.log(res8); // NaN
      

將被轉換的數據傳入parseInt()函數中/parseFloat()函數中

  • Number()函數中無論混合字符串是否存在有效整數都會返回NaN

  • 利用parseInt()/parseFloat()可以提取字符串中的有效整數

  • 兩者之前的區(qū)別是前者只能提取整數,后者可以提取小數

  • parseInt()提取字符串中的整數

    • 從第一位有效數字開始, 直到遇到無效數字
    • 如果第一位不是有效數字, 什么都提取不到, 會返回NaN
    • 第一個參數是要轉換的字符串诀蓉,第二個參數是要轉換的進制
          var str7 = "300px";
          var res9 = parseInt(str7);
          console.log(res9); // 300
      
          var str8 = "300px250";
          var res10 = parseInt(str8);
          console.log(res10); // 300
      
          console.log(parseInt("abc123"));  //返回NaN,如果第一個字符不是數字或者符號        就返回NaN
          console.log(parseInt(""));        //空字符串返回NaN寝姿,Number("")返回0
      
      
  • parseFloat提取字符串中的小數

    • 會解析第一個. 遇到第二個.或者非數字結束
    • 如果第一位不是有效數字, 什么都提取不到
    • 不支持第二個參數交排,只能解析10進制數
    • 如果解析的內容里只有整數,解析成整數
          var str9 = "20.5px";
          var res11 = parseInt(str9);
          console.log(res11); // 20
      
          var str10 = "20.5.5.5px";
          var res12 = parseFloat(str10);
          console.log(res12); // 20.5
      
  • 對非String使用parseInt()或parseFloat(), 會先將其轉換為String然后在操作

        var str11 = true;
        var res13 = parseInt(str11); // 這里相當于parseInt("true");
        console.log(res13); // NaN
        var res14 = Number(str11);
        console.log(res14); // 1
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末饵筑,一起剝皮案震驚了整個濱河市埃篓,隨后出現的幾起案子,更是在濱河造成了極大的恐慌根资,老刑警劉巖架专,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異玄帕,居然都是意外死亡部脚,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門裤纹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來委刘,“玉大人丧没,你說我怎么就攤上這事∥疲” “怎么了呕童?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長淆珊。 經常有香客問我夺饲,道長,這世上最難降的妖魔是什么施符? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任往声,我火速辦了婚禮,結果婚禮上戳吝,老公的妹妹穿的比我還像新娘浩销。我一直安慰自己,他們只是感情好骨坑,可當我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布撼嗓。 她就那樣靜靜地躺著,像睡著了一般欢唾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上粉捻,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天礁遣,我揣著相機與錄音,去河邊找鬼肩刃。 笑死祟霍,一個胖子當著我的面吹牛,可吹牛的內容都是我干的盈包。 我是一名探鬼主播沸呐,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼呢燥!你這毒婦竟也來了崭添?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤叛氨,失蹤者是張志新(化名)和其女友劉穎呼渣,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體寞埠,經...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡屁置,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了仁连。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蓝角。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出使鹅,到底是詐尸還是另有隱情揪阶,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布并徘,位于F島的核電站遣钳,受9級特大地震影響,放射性物質發(fā)生泄漏麦乞。R本人自食惡果不足惜蕴茴,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望姐直。 院中可真熱鬧倦淀,春花似錦宾巍、人聲如沸爵政。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽撑毛。三九已至上遥,卻和暖如春招盲,著一層夾襖步出監(jiān)牢的瞬間诈嘿,已是汗流浹背均牢。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留徘跪,地道東北人甘邀。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓垮庐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親哨查。 傳聞我的和親對象是個殘疾皇子逗抑,可洞房花燭夜當晚...
    茶點故事閱讀 45,047評論 2 355