03-JavaScript基礎—數據類型

文章配套視頻

數據

  • 數據是指所有能輸入到計算機并被計算機程序處理的符號的介質的總稱,是具有一定意義的數字、字母、符號和模擬量等的通稱。
數據以各種形式存在于我們生活中

數據類型

  • 為什么會有數據類型?
var  a = 10;
var  b = '10';

思考:變量名a 和 變量名b 保存的數據是否一樣?

  • JS中常用的數據類型

    • 程序在運行過程中會產生各種各樣的臨時數據, 為了方便數據的運算和操作, JavaScript對這些數據進行了分類, 提供了豐富的數據類型;

    • 在JavaScript中一共有六種數據類型:

    • JS的6種數據類型
  • JS中如何查看數據類型?

    • typeof 操作符
      • 會將檢查的結果以字符串的形式返回給我們
      console.log(typeof  100); // number
      var name = "旋之華";
      console.log(typeof name ); // string
      
  • 數字類型(Number)

    1: 最基本的數據類型
    2: 不區分整型數值和浮點型數值
    3: 能表示的最大值是±1.7976931348623157乘以10的308次方
    能表示的最小值是±5 乘以10的-324次方
    4:包含十六進制數據,以 0x開頭 0到9之間的數字,a(A)-f(F)之間字母構成。 a-f對應的數字是10-15
    5: 八進制直接以數字0開始,有0-7之間的數字組成。

    • 在JS中所有的數值都是Number類型(整數和小數)
     var num1= 123;
     var num2= 3.14;
     console.log(typeof num1); // number
     console.log(typeof num2); // number
    
    • 由于內存的限制,ECMAScript 并不能保存世界上所有的數值
     // 最大值:Number.MAX_VALUE
     console.log(Number.MAX_VALUE);  // 1.7976931348623157e+308
     // 最小值:Number.MIN_VALUE
     console.log(Number.MIN_VALUE);  // 5e-324
     // 無窮大:Infinity, 如果超過了最大值就會返回該值
     console.log(Number.MAX_VALUE + Number.MAX_VALUE); // Infinity
     // 無窮小:-Infinity, 如果超過了最小值就會返回該值
     console.log(typeof Infinity); // number
     console.log(typeof -Infinity); // number
    
    • NaN 非法數字(Not A Number)
      JS中當對數值進行計算時沒有結果返回,則返回NaN
     var str = NaN;
     console.log(typeof str ); // number
    
    • Number類型注意點
     //  JS中整數的運算可以保證精確的結果
      var counter = 120 + 20;
      console.log(counter ); // 140
     //  在JS中浮點數的運算可能得到一個不精確的結果
      var counter = 100.1 + 20.1;
      console.log(counter ); // 120.200000000000003
    
  • 字符串類型(string)

    • 字符串由單引號或雙引號括起
    • 例如單獨一個字母也被稱為字符串(例如:‘a’)
    • " '
    • 使用字符串注意事項
      //  正常的情況
      var str1 = "hello";
      var str2 = `world`;
      console.log(typeof str1 ); // string
      console.log(typeof str2); // string
      
      //  不能一單一雙,必須成對出現 
      var str3 = `hello world"; // 錯誤
      
      //  相同引號不能嵌套,不同引號可以嵌套
      var str3 = "hello "world""; // 錯誤
      var str4 = `hello `world``; // 錯誤
      var str5 = "hello 'world'"; // 正確
      var str6 = `hello "world"`; // 正確
      
  • 布爾類型(Boolean)

    • 布爾型也被稱為邏輯值類型或者真假值類型
    • 布爾型只能夠取真(true)和假(false)兩種數值, 也代表1和0,實際運算中true=1,false=0
    var bool1 = true;
    var bool2 = false;
    console.log(typeof bool1); // boolean
    console.log(typeof bool2); // boolean
    
    • 雖然Boolean 類型的字面值只有兩個,但 ECMAScript 中所有類型的值都有與這兩個 Boolean 值等價的值

    任何非零數值都是true, 包括正負無窮大, 只有0和NaN是false
    任何非空字符串都是true, 只有空字符串是false
    任何對象都是true, 只有null和undefined是false

     var bool = Boolean(0);
     console.log(bool ); // false
    var bool = Boolean(1);
    console.log(bool ); // true
    var bool = Boolean(-1);
    console.log(bool ); // true
    var bool = Boolean("hello");
    console.log(bool); // true
    var bool = Boolean("");
    console.log(bool ); // false
    var bool = Boolean(undefined);
    console.log(bool ); // false
    var bool = Boolean(null);
    console.log(bool8); // bool 
    
  • Null和Undefined

    • Undefined這是一種比較特殊的類型,表示變量未賦值,這種類型只有一種值就是undefined
      var num;
      console.log(num);  //結果是undefined
    
    • undefined是Undefined類型的字面量

      • 前者undefined和10, "abc"一樣是一個常量
      • 后者Undefined和Number,Boolean一樣是一個數據類型
    • 需要注意的是typeof對沒有初始化和沒有聲明的變量都會返回undefined。

     var str1 = undefined;
     console.log(typeof str1 ); //結果是undefined
      
     var str2;
     console.log(typeof  str2); //結果是undefined
    
    • Null 類型是第二個只有一個值的數據類型,這個特殊的值是 null
      • 從語義上看null表示的是一個空的對象。所以使用typeof檢查null會返回一個Object
        var test1= null;
        console.log(typeof test1);
      
    • undefined值實際上是由null值衍生出來的,所以如果比較undefined和null是否相等,會返回true
       var str1 = null;
       var str2 = undefined;
       console.log(str1 == str12);
       console.log(str1=== str2);
      

數據類型轉換

  • 什么是數據類型轉換

    • 將一個數據類型轉換為其他的數據類型, 比如: 將String類型轉換為Number類型, 將Number類型轉換為Boolean類型... ...
  • toString()

    • 將其它類型的數據轉換為字符串類型
         var num = 12306;
         var str= num .toString();
         console.log(str); // 12306
         console.log(typeof str); // string
      
         var num1 = true;
         var str1 = num1.toString();
         console.log(str1 ); // true
         console.log(typeof str1 ); // string
      
    • 注意:null和undefined沒有toString()方法,如果強行調用,則會報錯
       var num2 = undefined;
       var str2 = num2.toString(); // 報錯
       console.log(str2 );
      
       var num3 = null;
       var str3= num3.toString(); // 報錯
       console.log(res4);
      
       var num4 = NaN;
       var str4 = num4.toString();
       console.log(str4); // NaN
       console.log(typeof str4); // String
      
    • toString()不會影響到原變量,它會將轉換的結果返回
       var num5 = 10;
       var str5 = str5.toString();
       console.log(typeof num5 ); // number
       console.log(typeof str5 ); // string
      
  • String()函數

    • 有的時候, 某些值并沒有toString()方法,這個時候可以使用String()。比如:undefined和null
      • Number和Boolean的數據就是調用的toString()方法
      • 對于null和undefined,就不會調用toString()方法, 因為沒有這個方法, 會在內部生成一個新的字符串
  • +

    • 任何數據和 + 連接到一起都會轉換為字符串
      , 其內部實現原理和String()函數一樣
         var num1 = 100;
         var res1 = num1 + "";
         console.log(res1); // 100
         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()函數

    • 字符串 轉 數字
      • 如果是純數字的字符串,則直接將其轉換為數字
      var str1 = "666";
      var res1 = Number(str1);
      console.log(res1); // 666
      console.log(typeof  res1); // number
      
      • 如果字符串中有非數字的內容,則轉換為NaN
      var str2 = "itlike123";
      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
      
    • undefined 轉 數字
      var str6 = undefined;
      var res8 = Number(str6);
      console.log(res8); // NaN
      
    • null 轉 數字
      var str5 = null;
      var res7 = Number(str5);
      console.log(res7); // 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
      
  • parseInt()函數和parseFloat()函數

    • Number()函數中無論混合字符串是否存在有效整數都會返回NaN, 利用parseInt()/parseFloat()可以提取字符串中的有效整數

    • parseInt()和parseFloat()的區別是前者只能提取整數,后者可以提取小數

    • 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閱讀 227,702評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,143評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,553評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,620評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,416評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,940評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,024評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,170評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,709評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,597評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,784評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,291評論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,029評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,407評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,663評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,403評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,746評論 2 370

推薦閱讀更多精彩內容

  • 變量 聲明變量 命名變量區分大小寫的語言第一個字符是字母或下劃線_,數字不能作為第一個字符字符必須是字母,數字或者...
    flyingtoparis閱讀 826評論 0 0
  • 什么是數據類型轉換 將一個數據類型轉換為其他的數據類型例如: 將Number類型轉換為Boolean類型例如: 將...
    極客江南閱讀 3,015評論 5 33
  • 第三章 基本概念 3.1 語法 ECMAScript標識符一般采用駝峰大小寫格式,也就是第一個字母小寫,剩下的每個...
    小雄子閱讀 558評論 0 1
  • 1.JavaScript 定義了幾種數據類型? 哪些是原始類型?哪些是復雜類型?原始類型和復雜類型的區別是什么? ...
    saintkl閱讀 328評論 0 0
  • "最美的不是下雨天而是與你一起躲過雨的屋檐" 雨天,突然聽到這首歌,不由地觸景生情。 聽杰倫的第一首歌是在05年,...
    zmanan閱讀 1,760評論 0 1