100_js笔记3_js的数据类型 + 数据类型转换

一,js数据类型

  1. 值类型(基本类型)
    1. String 字符串(基本数据类型)
    2. Number 数值(基本数据类型)
    3. Boolean 布尔值(基本数据类型)
    4. Null 空值(基本数据类型)
    5. Undefined 未定义(基本数据类型)
    6. Symbol类型
  2. 引用数据类型
    1. Object 对象
    2. Array数组
    3. Function函数

二,查看数据类型

  • 使用格式:typeof 数据,例如 typeof 123; typeof num;
  • typeof操作符会将检查的结果以字符串的形式返回给我们
  • var value= 10;
    // 此时将value的数据类型number以字符串返回给我们, 存入到res变量中
    var res = typeof value; 
    // 此时检查res的数据类型为string, 证明typeof返回给我们的是一个字符串
    console.log(typeof res); // string
    
    

三,String字符串类型

  1. 单引号和双引号均可以
  2. 相同引号不能嵌套,不同引号可以嵌套
  3. 和C语言不同的是, 在C语言中单引号括起来的是字符,而JavaScript中无论单引号还是双引号括起来的都是字符串 

四,Number数字类型

  1.  在JS中所有的数值都是Number类型(整数和小数)
  2. 由于内存的限制,ECMAScript 并不能保存世界上所有的数值
    1. 最大值:Number.MAX_VALUE
      1. console.log(Number.MAX_VALUE);  // 1.7976931348623157e+308
    2. 最小值:Number.MIN_VALUE
      1. console.log(Number.MIN_VALUE);  // 5e-324
    3. 无穷大:Infinity, 如果超过了最大值就会返回该值
      1. console.log(Number.MAX_VALUE + Number.MAX_VALUE); // Infinity
    4. 无穷小:-Infinity, 如果超过了最小值就会返回该值
      1.  console.log(typeof Infinity); // number
      2.  console.log(typeof -Infinity); // number
    5. NaN 非法数字(Not A Number),JS中当对数值进行计算时没有结果返回,则返回NaN
      1. var num3 = NaN;
      2. console.log(typeof num3); // number
  3. JS中整数的运算可以保证精确的结果;在JS中浮点数的运算可能得到一个不精确的结果
  4. 在C语言中整数是int,小数是float或者double;而JavaScript中无论是整数还是小数都是Number

五,Boolean 布尔类型

  1. 布尔型只能够取真(true)和假(false)两种数值
  2. 任何非零数值都是true, 包括正负无穷大, 只有0和NaN是false
  3. 任何非空字符串都是true, 只有空字符串是false
  4. 任何对象都是true, 只有null和undefined是false 

六,Undefined类型

  1. Undefined这是一种比较特殊的类型,表示变量未赋值,这种类型只有一种值就是undefined
  2. undefined是Undefined类型的字面量
    1. 前者undefined和10, "abc"一样是一个常量
    2. 后者Undefined和Number,Boolean一样是一个数据类型
  3. 需要注意的是typeof对没有初始化和没有声明的变量都会返回undefined。 

七,Null类型

  1. Null 类型是第二个只有一个值的数据类型,这个特殊的值是 null
  2. 从语义上看null表示的是一个空的对象。所以使用typeof检查null会返回一个Object
  3. undefined值实际上是由null值衍生出来的,所以如果比较undefined和null是否相等,会返回true

八,Symbol类型

Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值

九,数据类型转换

  1. 其它类型转换为字符串
    1. 调用被转换数据类型的toString()方法
      1. 该方法不会影响到原变量,它会将转换的结果返回
      2. null和undefined这两个值没有toString()方法
    2. 调用String()函数
      1. 对于Number和Boolean实际上就是调用的toString()方法
      2. null和undefined这两个值有String()方法
    3. 将被转换的数据和+""连接到一起 
      1. 任何数据和 +"" 连接到一起都会转换为字符串
      2.       var num1 = 10;
                var res1 = String(num1); // 重点
                console.log(res1); // 10
                console.log(typeof res1); // string
  2. 其它类型转换为Number类型
    1. 将被转换的数据传入Number()函数中
      1. 字符串 --> 数字
        1. 如果是纯数字的字符串,则直接将其转换为数字
              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
          
          
      2. 布尔 --> 数字
        1. 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
          
          
    2. 将被转换的数据传入parseInt()函数中/parseFloat()函数中
      1. parseInt()提取字符串中的整数
        1. 从第一位有效数字开始, 直到遇到无效数字
          如果第一位不是有效数字, 什么都提取不到, 会返回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
          
          
      2. parseFloat提取字符串中的小数
        1. 会解析第一个. 遇到第二个.或者非数字结束
          如果第一位不是有效数字, 什么都提取不到
          不支持第二个参数,只能解析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
          
          
      3. 对非String使用parseInt()或parseFloat(), 会先将其转换为String然后在操作
        1.         var str11 = true;
                  var res13 = parseInt(str11); // 这里相当于parseInt("true");
                  console.log(res13); // NaN
                  var res14 = Number(str11);
                  console.log(res14); // 1
          
          
      4. parseInt(),parseFloat(),Number()函数的区别

        1. Number()函数中无论混合字符串是否存在有效整数都会返回NaN
        2. 利用parseInt()/parseFloat()可以提取字符串中的有效整数
        3. parseFloat()会解析第一个. 遇到第二个.或者非数字结束
        4. 两者之前的区别是前者只能提取整数,后者可以提取小数
    3. 利用+ - 运算符
      1. 添加+号, 不会修改数据的正负性
      2. 添加-号, 会修改数据的正负性
      3. var str1 = "666";
                var res1 = +str1;
                console.log(res1); // 666
                console.log(typeof res1);
        
                var str2 = "3.14";
                var res2 = +str2;
                console.log(res2); // 3.14
                console.log(typeof res2);
        
                var str3 = "666px";
                var res3 = +str3;
                console.log(res3); // NaN
                console.log(typeof res3);
        
                var flag = false;
                var res4 = +flag;
                console.log(res4); // 0
                console.log(typeof res4);
        
                var flag = true;
                var res4 = +flag;
                console.log(res4); // 1
                console.log(typeof res4);
        

猜你喜欢

转载自blog.csdn.net/a_horse/article/details/84334364