美文网首页
02-JS基础-数据类型

02-JS基础-数据类型

作者: xiaohan_zhang | 来源:发表于2018-05-08 16:54 被阅读0次
    • 数据的计量单位
    1 B(Byte字节) = 8 bit(位)
    1 KB(KByte) = 1024 B
    1 MB = 1024 KB
    1 GB = 1024 MB
    1 TB = 1024 GB
    
    数据类型
    • JS中的六种数据类型

    String    字符串 (基本数据类型)
    Number   数值 (基本数据类型)
    Boolean   布尔值 (基本数据类型)
    Null     空值 (基本数据类型)
    Undefined  未定义 (基本数据类型)
    Object     对象 (引用数据类型)

    • 查看数据类型
      使用 typeof 操作符可以用来检查数据类型, 会将检查的结果以字符串的形式返回给我们。
      使用格式:typeof 数据,例如 typeof 123; typeof num;
    console.log(typeof 123); // number
    var num = 10;
    console.log(typeof num); // number
    
    • String字符串
      字符串需要使用 ' 或 " 括起来。
      相同引号不能嵌套,不同引号可以嵌套。
    var str1 = "hello";
    var str2 = 'world';
    
    var str3 = "hello "world""; // 错误
    var str4 = 'hello 'world ''; // 错误
    var str5 = "hello 'world'"; // 正确
    var str6 = 'hello "world"';// 正确
    
    // 不想''和 "" 混用,可以用转义字符
    console.log('我说:"今天天气不错"');  // 我说:"今天天气不错"
    console.log("我说:\"今天天气不错\"");
    /*
    * \" 表示 "
    * \' 表示 '
    * \n 表示 换行
    * \t 表示 制表符
    * \\ 表示 \
    * */
    
    • Number类型
      在JS中所有的数值都是Number类型(整数和小数)。
    var num1= 123;
    var num2= 3.14;
    console.log(typeof num1); // number
    console.log(typeof num2); // number
    
    // 浮点数计算可能得到不精确结果
    console.log("0.1 + 0.2 = " + a); // 0.30000000000000004
    

    最大值:Number.MAX_VALUE

    console.log(Number.MAX_VALUE);  // 1.7976931348623157e+308
    

    最小值(大于0的最小值):Number.MIN_VALUE

    console.log(Number.MIN_VALUE);  // 5e-324
    

    无穷大:Infinity, 如果超过了最大值就会返回该值

    console.log(Number.MAX_VALUE + Number.MAX_VALUE); // Infinity
    console.log(typeof Infinity); // number
    

    无穷小:-Infinity, 如果超过了最小值就会返回该值

     console.log(typeof -Infinity); // number
    

    NaN :非法数字(Not A Number),JS中当对数值进行计算时没有结果返回,则返回NaN

    console.log("abc" * "abc"); // NaN
    console.log(typeof NaN); // number
    
    • Boolean 布尔值
      布尔型只能够取真(true)和假(false)两种数值。
      注意:
      1)任何非零数值都是true, 包括正负无穷大, 只有0和NaN是false;
      2)任何非空字符串都是true, 只有空字符串""是false;
      3)任何对象都是true, 只有null 和 undefined 是 false;
    console.log(Boolean(0));  // false
    console.log(Boolean(1)); // true
    console.log(Boolean(-1)); // true
    console.log(Boolean(Infinity)); // true
    console.log(Boolean(-Infinity)); // true
    console.log(Boolean(NaN)); // false
    console.log(Boolean("abc")); // true
    console.log(Boolean("")); // false
    console.log(Boolean(undefined)); // false
    console.log(Boolean(null)); // false
    
    • Null
      Null 类型表示的是一个空的对象,只有一种值是 null。
      typeof null 会返回一个Object。
    var test1= null;
    console.log(typeof test1); // Object
    
    • Undefined
      Undefined 类型,表示变量未赋值,这种类型只有一种值就是undefined。
      typeof 对没有初始化和没有声明的变量都会返回undefined。
    var value1 = undefined;
    console.log(typeof value); //结果是undefined
    
    var value2;
    console.log(typeof  value2); //结果是undefined
    

    undefined值实际上是由null值衍生出来的,所以如果比较undefined和null是否相等,会返回true。

    var test1 = null;
    var test2 = undefined;
    console.log(test1 == test2); // true
    console.log(test1 === test2); // false
    
    数据类型转换
    • 将其它类型转换为字符串
    1. 调用被转换数据类型的toString()方法。
    var num = 100;
    var num1 = num.toString();
    console.log(typeof num); // number
    console.log(typeof num1); // string
    
    var b = true;
    var b1 = b.toString();
    console.log(typeof b); // boolean
    console.log(typeof b1); // string
    
    var n = NaN;
    var n1 = n.toString();
    console.log(typeof n); // number
    console.log(typeof n); // string
    

    注:
    1)null 和 undefined 这两个值没有toString()方法。
    2)toString() 方法不会影响到原变量,它会将转换的结果返回。

    数值类型的toString(),可以携带一个参数,输出对应进制的值。

    var num = 20;
    var res1 = num.toString(2);
    var res2 = num.toString(8);
    var res3 = num.toString(10);
    var res4 = num.toString(16);
    console.log(res1); // 10100
    console.log(res2); // 24
    console.log(res3); // 20
    console.log(res4); // 14
    
    1. 调用String()函数
      有些值没有toString(),这个时候可以使用String()。比如:undefined和null。
      对于Number和Boolean实际上就是调用的toString()方法
    var res1 = String(10); 
    console.log(typeof res1); // string
    
    var res2 = String(true); 
    console.log(typeof res2); // string
    

    对于null 和 undefined,就不会调用toString()方法(因为没有这个方法),而是在内部生成一个新的字符串。

    var res3 = String(undefined);
    console.log(typeof res3); // string
    
    var res4 = String(null);
    console.log(typeof res4); // string
    
    1. 将被转换的数据和 + "" 连接到一起
      任何数据和 +"" 连接到一起都会转换为字符串,内部实现原理和String()函数一样。
    var res1 = 10 + "";
    console.log(typeof res1); // string
    
    var res2 = true + "";
    console.log(typeof res2); // string
    
    var res3 = undefined + "";
    console.log(typeof res3); // string
    
    var res4 = null + "";
    console.log(typeof res4); // string
    
    • 将其它类型转换为Number类型
    1. 调用Number()函数
    • String --> Number

    1)如果是纯数字的字符串,则直接将其转换为数字。

    var res1 = Number("123");
    console.log(typeof  res1); // number
    

    2)如果字符串中有非数字的内容,则转换为NaN。

    var res2 = Number("123ab");
    console.log(res2); // NaN    
    

    3)如果是空字符串或全是空格的字符串,则转换为0。

    var res3 = Number("");
    console.log(res3); // 0
    
    var res4 = Number( "    ");
    console.log(res4); // 0
    
    • Boolean --> Number
      true 转成 1
      false 转成 0
    var res5 = Number(true);
    console.log(res5); // 1
    
    var res6 = Number(false);
    console.log(res6); // 0
    
    • Null --> Number
      null 转成0
    console.log(Number(null)); // 0
    
    • Undefined --> Number
    console.log(Number(undefined)); // NaN
    
    1. parseInt() 方法和 parseFloat() 方法
      Number()函数中无论混合字符串是否存在有效整数都会返回NaN,利用 parseInt() / parseFloat() 可以提取字符串中的有效整数。
      parseInt() / parseFloat(),两者之前的区别是前者只能提取整数,后者可以提取小数。
    • parseInt()提取字符串中的整数
      1)从第一位有效数字开始, 直到遇到无效数字;
      2)如果第一位不是有效数字, 什么都提取不到, 会返回NaN;
      3)第一个参数是要转换的字符串,第二个参数是要转换的进制;
    var res7 = parseInt("300px");
    console.log(res7); // 300
    
    var res8 = parseInt("300px250");
    console.log(res8); // 300
    
    var res9 = parseInt("300.2px");
    console.log(res9); // 300
    
    var res10 = parseInt("abc123");
    console.log(res10);  //NaN
    
    var res11 = parseInt("");
    console.log(res11);        // NaN,Number("")返回0
    
    • parseFloat提取字符串中的小数
      1)会解析第一个. 遇到第二个.或者非数字结束;
      2)如果第一位不是有效数字, 什么都提取不到;
      3)不支持第二个参数,只能解析10进制数;
      4)如果解析的内容里只有整数,解析成整数;
    var res12 = parseFloat("20.5px");
    console.log(res11); // 20.5
    
    var res13 = parseFloat("20.5.5.5px");
    console.log(res12); // 20.5
    
    var res14 = parseFloat("abc20.5");
    console.log(res13); // NaN
    
    var res15 = parseFloat("20abc");
    console.log(res14); // 20
    

    对非String使用parseInt()或parseFloat(), 会先将其转换为String然后在操作。

    var res16 = parseInt(true); // 这里相当于parseInt("true");
    console.log(res16); // NaN
    
    1. 利用算数运算
      任何类型与Number 进行 减、乘、除、取模运算,都会先转为Number。
    var a = "10";
    var res17 = a - 0;
    console.log(typeof res17); // number
    var res18 = a * 1;
    console.log(typeof res18); // number
    var res19 = a / 1;
    console.log(typeof res19); // number
    
    1. 利用 + 正号
      正号运算时,对于非Number类型的值,会将先转换为Number,然后再运算
    var res = +true;
    console.log(res);   // 1
    console.log(typeof res); // number
    
    • 将其它类型转换为Boolean
    1. 使用Boolean()函数
    • Number --> Boolean
      0 和 NaN 为false,其他数字为true
    console.log(Boolean(123));  // true
    console.log(Boolean(0));    // false
    console.log(Boolean(NaN));  // false
    
    • String --> Boolean
      "" 为 false,其他字符串为true
    console.log(Boolean("abc")); // true
    console.log(Boolean(" "));   // true
    console.log(Boolean(""));    // false
    
    • Null --> Boolean
      null 转布尔类型为 false
    console.log(Boolean(null));  // false
    
    • Undefined --> Boolean
      undefined 转布尔类型为 false
    console.log(Boolean(undefined)); // false
    
    1. 利用逻辑非表达式
    var num = 10;
    num = !!num;
    console.log(num);  // true
    
    • 进制转换
    1. 二进制转换八进制
               00 001 001
     结果:    0    1    1 = 011
     console.log(parseInt("011", 8)); // 十进制 9
    
    1. 二进制转换十六进制
             0001 1011
      结果:    1      b = 0x1b
      console.log(parseInt("0x1b", 16));// 十进制 27
    

    参考极客江南简书:https://www.jianshu.com/p/f953f5ba1d84

    相关文章

      网友评论

          本文标题:02-JS基础-数据类型

          本文链接:https://www.haomeiwen.com/subject/chmirftx.html