数据

数据类型

  • 1-基本数据类型:结构简单,存储在栈内存里面,操作的是值

    • 字符串 string : '' "" 'a' "a" 'asdfdf'

    • 字符串天生自带一个length属性,表示字符串长度(字符个数)

    • 通过字符串的索引值(下标)可以访问字符串中指定字符 索引值范围:0 - (length-1)

          var str = 'hello world!';
          console.log(str.length); //12
          console.log(str[0]);  //'h'
          console.log(str[str.length-1]); //'!'
      
    • 数字 number : 正数 负数 小数 NaN(not a number)

    • js小数之间运算会有精度损失,一般应当避免小数之间直接运算

          console.log(0.1+0.3); //  0.30000000000004
      
    • 布尔 boolean : truefalse

    • null 空

    • undefined 未定义(未初始化)

  • 2-引用数据类型:结构复杂,存储在堆内存里面,操作的是地址

    • 对象 object { key1:val,key2:val} {}空对象
    • 数组 array [1,2,3,'aaa'] []空数组
      • 数组天生自带一个length属性,表示数组长度
      • 通过数组的索引值(下标)可以访问数组中的一项 索引值范围:0 - (length-1)
          var ary = [2,3,4,5]; 
          console.log(ary.length);  //4
          console.log(ary[0]); //2
          console.log(ary[ary.length-1]); //5
      
    • 正则 regExp /^1$/
    • 函数 function function(){ }

(二) 检测数据类型

  • 1-typeof 通常用来检测基本数据类型

    • null 检测出来结果是object , 因为null在js中被定义为一个空对象的引用
    • [] , {} ,/123/ 检测结果都是object
       console.log( typeof '' );  //string
       console.log( typeof -18);  //number
       console.log( typeof NaN);  //number
       console.log( typeof true);   //boolean
       console.log( typeof null);   //object
       console.log( typeof undefined);  //undefined
       console.log( typeof []);  //object
       console.log( typeof /123/);  //object
       console.log( typeof {});  //object
       console.log( typeof function(){});  //function
    
  • 2-instanceof 通常用来检测引用数据类型,判断某个对象是否属于某个类的实例

      console.log([] instanceof Array);  //true
      console.log(/123/ instanceof RegExp); //true
      console.log({} instanceof Object);   //true
      console.log(function(){}   instanceof Function); //true 
    

(三) 数据类型转换

  • 1- isNaN() 检测一个值是否不是一个有效数字 , 是数字返回false,反之为true (隐式调用Number()方法把值转换成number类型再判断)

    console.log(isNaN('12')); //false
    console.log(isNaN(true));  //false
    
  • 2- Number(); 强制转换成number类型

        console.log(Number('12.345')); // 12.345
        console.log(Number(''));  //0
    
        console.log(Number(true));  //1
        console.log(Number(false));  //0
    
        console.log(Number(null));  //0
    
        console.log(Number([]));  //0
        console.log(Number([12]));  //12
        console.log(Number(['12']));  //12
    
    
  • 3- parseInt(); 转换成整型的数字

    • 从左到右查找数字,直到碰到非数字就停止查找,把已经找到的数字返回
      console.log(parseInt('12px345'));  //12
      console.log(parseInt('12.5px345')); //12        
      console.log(parseInt('12.23435')); //12
      
  • 4- parseFloat(); 转换成浮点型的数字

    • 比parseInt()多识别一个小数点

      console.log(parseFloat('12.5px345')); //12.5
      
  • 5- Boolean(); 转换成布尔值

    • 空字符串\0\NaN\null\undefined,转换成布尔值都是false,其他的值都是true

      console.log(Boolean(''));  //false
      console.log(Boolean(0)); //false
      console.log(Boolean(NaN)); //false
      console.log(Boolean(null)); //false
      console.log(Boolean(undefined)); //false
      
  • 6- toString(); 转换成字符串

        //数组串字符串:去掉括号,加引号
         console.log([1,2,3].toString()); // '1,2,3' 
         //所有对象转成字符串结果都是 '[object Object]'
         console.log({name:'ujiuye'}.toString()); // '[oject Object]'
    
    • toString() 不能操作null和undefined ,会报错
    • String() 大部分情况和toString效果一样
      • 可以用来把null和undefined转换成字符串
       console.log(String(null)); // 'null'
       console.log(String(undefined));  // 'undefined'
      

(四) 运算符

  • 1- 算术运算符

    • 加 +

      • 如果 + 号两边有一个是字符串,那么就是字符串连接符
       console.log('10'+20);  //'1020'
      
    • 减 -

    • 乘 *

    • 除 /

    • 取模 %

      • 算术运算符两边如果不是数字,会隐式转换成数字然后运算(+除外)
    • 自增 ++

          var  n = 0;
          n++;  // n = n + 1;
          console.log(n); //1
      
          var x = 0;
          var y = x++; //++写在后面,先赋值再运算
          console.log(y); //0
      
          var a = 0;
          var b = ++a; //++写在前面,先运算再赋值
          console.log(b); //1
      
    • 自减 –

  • 2- 比较运算符

    • 等于 == :如果数据类型不同会进行隐式转换,然后比较

    • 全等 === : 数据类型和值都必须相等

    • 不等 !=

    • 不全等 !==

          console.log( 12 == '12'); //true
          console.log( 12 === '12'); //false
          console.log( 12 != '12'); //false
          console.log( 12 !== '12'); //true
      
    • 大于 >

    • 小于 <

    • 大于等于 >=

    • 小于等于 <=

  • 3- 赋值运算符

    • =
    • += x += y ==> x = x + y;
    • -= x -= y ==> x = x - y;
    • *= x *= y ==> x = x * y;
    • /= x /= y ==> x = x / y;
    • %= x %= y ==> x = x % y;
  • 4- 逻辑运算符

    • 与(且) && : 两边的表达式都成立,最终结果成立

    • || : 两边的表达式有一个成立,整个表达式结果成立

      • &&||: 返回决定表达式最终结果那一边的值
    • ! : 取反,结果一定是布尔值

          console.log(1&&0); //0
          console.log(1&&2); //2
          console.log(1&&-1); //-1
          console.log(0&&-1); //0
          console.log(1||0);  // 1
          console.log(0||false);  //false
          console.log(1||true);  //1
      
  • 5- 三目运算符

    条件 ? 条件成立执行的代码 : 条件不成立执行的代码 ; 
    

(五) 不同数据类型比较的规律

- ① : 字符串和数字比较 : 字符串转数字,然后比较
- ② : 字符串和布尔值 : 字符串和布尔值都转数字,比较
- ③ : 数字和布尔比较 :  布尔转数字再比较
- ④ : NaN和任何的值比较都不相等,包括自己
- ⑤ : 字符串和数组 : 数组转字符串,再比较
- ⑥ : 字符串和对象 : 对象转字符串,再比较
- ⑦ : null和undefined比较相等,各自和其他数据类型的值比较都不相等
- ⑧ : 引用数据类型的值相比较永不相等
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值