JavaScript学习_基础_04_基本数据运算

一、同种数据类型的数值运算及比较

+、-、*、/、%、>、<、==、时都是把内容先转化为数字类型,注意特殊情况。

  1. 数字和数字

    数字之间进行运算的时候,该怎么算就怎么算。

    特殊的情况:

    console.log(0/1) ; // 0
    console.log(1/0) ; // infinity(无穷大) 
    console.log(1%0) ; // NaN
    console.log(0/0) ; // NaN
    console.log(0%0) ; // NaN
    console.log(Number.MAX_VALUE) ; // 可表示的最大值
    
  2. 字符串和字符串

    正常字符串

    var a = 'i love you!';
    var b = 'zhao li ying';
    
    console.log(a + b);  // i love you!zhao li ying
                         // 字符串加法是拼接
    console.log(a - b);  // NAN
    console.log(a * b);  // NAN
    console.log(a / b);  // NAN
    console.log(a % b);  // NAN
    

    两个空字符串

    var a = '';
    var b = '';
    console.log(a + b) ;    // 空
    console.log(a - b) ;    // 0
    console.log(a * b) ;    // 0
    console.log(a / b) ;    // NAN
    console.log(a % b) ;    // NAN
    

    空字符串和正常字符串

    var a = '';
    var b = 'dasd';
    console.log(a + b) ;   // dasd
    console.log(a - b) ;   // NAN
    console.log(a * b) ;   // NAN
    console.log(a / b) ;   // NAN
    console.log(a % b) ;   // NAN
    

    字符串的比较

    字符串比较的是字符串字符的unicode码值(万国码)。

    从字符串第一位开始比,谁码值大,所属的字符串就大,如果第一位一样就比第二位,以此类推。

    a = 'abc'; 
    b = 'ab';
    console.log(a > b);  // true
    
  3. boolean和boolean

    boolean间的数值运算就是先转化为数字然后再运算。

    var a = true;
    var b = true;
    console.log(a + b) ;   // 2
    console.log(a - b) ;   // 0
    console.log(a * b) ;   // 1
    console.log(a / b) ;   // 1
    console.log(a % b) ;   // 0
    
    var a = true;
    var b = false;
    console.log(a + b) ;   // 1
    console.log(a - b) ;   // 1
    console.log(a * b) ;   // 0
    console.log(a / b) ;   // infinity
    console.log(a % b) ;   // NaN
    

    boolean间的比较

    var a = true;
    var b = false;
    console.log(a > b); // true
    console.log(a < b); // false
    
  4. undefined和undefined
    var a = undefined;
    var b = undefined;
    console.log(a + b) ;   // NAN
    console.log(a - b) ;   // NAN
    console.log(a * b) ;   // NAN
    console.log(a / b) ;   // NAN
    console.log(a % b) ;   // NAN
    

    undefined间的比较

    var a = undefined;
    var b = undefined;
    console.log(a > b);  // false
    console.log(a < b);  // false
    console.log(a == b); // true
    
  5. null和null
    var a = null;
    var b = null;
    console.log(a + b) ;   // 0
    console.log(a - b) ;   // 0
    console.log(a * b) ;   // 0
    console.log(a / b) ;   // NAN
    console.log(a % b) ;   // NAN
    

    null间的比较

    var a = null;
    var b = null;
    console.log(a > b);  // false
    console.log(a < b);  // false
    console.log(a == b); // true
    

二、不同种数据类型的数值运算及比较

+、-、*、/、%、>、<、==、时都是把内容先转化为数字类型,注意特殊情况。

  1. 数字和其他数据类型的运算

    • 数字和字符串
      var a = 5 ;
      var b = ' ' ;
      console.log(a + b) ;  // 5(拼接字符串)
      console.log(a - b) ;  // 5(字符串转数字)
      console.log(a * b) ;  // 0
      console.log(a / b) ;  // infinity
      console.log(a % b) ;  // NAN
      console.log(a > b) ;  // true(字符串转数字)
      console.log(a < b) ;  // false	
      console.log(a == b) ; // false
      
    • 数字和boolean
      var a = 5 ;
      var b = true ;
      console.log(a + b) ;   // 6
      console.log(a - b) ;   // 4
      console.log(a > b) ;   // true
      console.log(a < b) ;   // false
      console.log(a == b) ;  // false
      
    • 数字和undefined
      var a = 5 ;
      var b = undefined ;
      console.log(a + b) ;   // NAN
      console.log(a - b) ;   // NAN
      console.log(a > b) ;   // false
      console.log(a < b) ;   // false
      console.log(a == b) ;  // false
      console.log(NaN == NaN) ;  // false
      
    • 数字和null
      var a = 5 ;
      var b = null ;
      console.log(a + b) ;   // 5
      console.log(a - b) ;   // 5
      console.log(a > b) ;   // true 
      console.log(a < b) ;   // false
      console.log(a == b) ;  // false
      

      特殊情况

      console.log(0 == null) ; // false
      
  2. 字符串和其他数据类型的运算

    两个变量进行相加,只要其中一个变量是字符串,那就是字符串拼接。

    • 字符串和boolean

      普通字符串

      a = 'sdfasf' ;
      b = true ;
      console.log(a + b) ;   // sdfasftrue
      console.log(a - b) ;   // NAN
      console.log(a > b) ;   // false
      console.log(a < b) ;   // false
      console.log(a == b) ;  // false
      

      纯数字字符串

      a = '123' ;
      b = true ;
      console.log(a - b) ;   // 122
      console.log(a > b) ;   // true
      console.log(a < b) ;   // false
      console.log(a == b) ;  // false
      

      空字符串

      a = '' ;
      b = true ;
      console.log(a - b) ;   // -1
      console.log(a > b) ;   // false
      console.log(a < b) ;   // true
      console.log(a == b) ;  // false
      
    • 字符串和undefined

      普通字符串

      a = 'sjhdga' ;
      b = undefined ;
      console.log(a + b) ;   // sjhdgaundefined
      console.log(a - b) ;   // NAN
      console.log(a > b) ;   // false
      console.log(a < b) ;   // false
      console.log(a == b) ;  // false
      

      纯数字字符串

      a = '123' ;
      b = undefined ;
      console.log(a - b) ;   // NAN
      console.log(a > b) ;   // false
      console.log(a < b) ;   // false
      console.log(a == b) ;  // false
      

      空字符串

      a = '' ;
      b = undefined ;
      console.log(a - b) ;   // NAN
      console.log(a > b) ;   // false
      console.log(a < b) ;   // false
      console.log(a == b) ;  // false
      
    • 字符串和null

      普通字符串

      a = 'sjhdga' ;
      b = null ;
      console.log(a + b) ;   // sjhdganull
      console.log(a - b) ;   // NAN
      console.log(a > b) ;   // false
      console.log(a < b) ;   // false
      console.log(a == b) ;  // false
      

      纯数字字符串

      a = '123' ;
      b = null ;
      console.log(a - b) ;   // 123
      console.log(a > b) ;   // true
      console.log(a < b) ;   // false
      console.log(a == b) ;  // false
      

      空字符串

      a = '' ;
      b = null ;
      console.log(a - b) ;  // 0
      console.log(a > b) ;  // false
      console.log(a < b) ;  // false
      

      特殊情况

      a = '' ;
      b = null ;
      console.log(a == b) ;  // false
      // 空字符串和null不相等。
      
  3. boolean和其他数据类型的运算

    • boolean和undefined
      a = true;
      b = undefined;
      console.log(a + b);  // NAN
      console.log(a - b);  // NAN
      console.log(a > b);  // false
      console.log(a < b);  // false
      console.log(a == b); // false
      
    • boolean和null
      a = true;
      b = null;
      console.log(a + b);  // 1
      console.log(a - b);  // 1
      console.log(a > b);  // true 
      console.log(a < b);  // false
      console.log(a == b); // false
      

      特殊情况

      a = false;
      b = null;
      console.log(a == b); // false
      // false和null不相等。
      
  4. undefined和其他类型的运算

    • undefined和null
      a = undefined;
      b = null;
      console.log(a + b);  // NAN
      console.log(a - b);  // NAN
      console.log(a > b);  // false
      console.log(a < b);  // false
      

      特殊情况

      a = undefined;
      b = null;
      console.log(a == b); // true
      // undefined 和 null 相等。
      

三、null与NAN的特殊情况

当遇到null的时候,会有特殊情况发生。
  • 0null 不相等

  • 空字符串null 不相等

  • falsenull 不相等

  • undefinednull 相等

    undefined是未定义值的变量,null是初始化一个空对象。
    这俩在某一层面上都表达了一种“ 空 ”的意思。

在其余的情况下,只要是不同的基本数据类型进行运算和比较:
  1. 第一步:先看是不是+

    如果是+,看有没有字符串,如果有,就是拼接字符串

  2. 第二步:再看是不是比较

    如果是比较,看两边是不是都是字符串,如果是,比较的是字符串的Unicode码

  3. 最后: 全部转数字

任何东西跟NAN进行任何运算的结果都是NAN。(NAN若是与其他变量进行比较(<、>、==)则结果恒为false)

四、练习

怎么将一个字符串‘23’转化为数字23?

  • Number('23') ;
    
  • '23' - 0 ;  // 最快的方法
    
  • parseInt('23') ;
    
  • parseFloat('23') ;
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值