javaScript数据和运算

javaScript数据和运算

js中的数据类型(理解)

  • 简单数据类型或值类型

    • string number boolean null undefined
  • 复杂数据类型或组合类型

    • Object Function Array RegExp Date

在这里插入图片描述


运算符(掌握)

算术运算符及算术表达式

一元运算符: ++ –

二元运算符: + - * / %

重点是参与二元运算的时候,运算规则就不一样了

1.如果是前++是先让自身加1(先让内存空间中的值+1),然后再拿着+1后的值进行后续运算
2.如果是后++是先拿原值参与运算(先用内存空间中原来的值),运算完毕之后再自身+1
  var num = 10;
      var result = ++num + num++ + num++ + ++num;
    // 参与运算的值:   11     11      12      14
    // 当前值:        11     12       13     14
    console.log(result); // 40  41  42  43  44  48

    var n1 = 12;
    var n2 = ++n1 + n1++ + ++n1 + n1--;
    // 参与:  13     13     15     15
    // 现值:  13     14     15     14
    console.log(n1,n2);

**算术表达式:**由算术运算符连接起来的式子.如:1+1 a-b(变量ab前面已声明并赋初值)

优先级:先乘除,后加减,有括号先算括号里的,相同级别的从左至右运算

一元运算符的优先级要大于二元运算符的优先级

var a=((1+5)+3)*2 小括号可以无限制的套用,但一定要成对出现.

++     自加一     有前加和后加
--     自减一     有前减和后减
一元运算符++/-- 比二元的+-优先级高
+=   -=    *=   /=    %=   复合赋值运算符
对于+-*/%=都需要两个操作数才能进行运算的这些运算符,我们叫做二元运算符
;对于像++ -- 这样的只需要一个操作数就能进行运算的运算符,我们叫做一元运算符.

关系运算符(比较运算)

关系运算符是用来比较两个数据值之间的一个关系,谁大,谁小?

关系运算符中又分比较运算和相等运算:

比较运算符: > >= < <=

相等运算符: == != === !==

大象的重量(1500)>老鼠的重量(1)
兔子的寿命(3)>乌龟的寿命(1000)
39<18
我的年龄(20)==你的年龄(20)
比大比小的结果是什么?  // 最终产结果是布尔类型的值

逻辑运算符

&&(逻辑与) ||(逻辑或) !(逻辑非)

表达式1&&表达式2:当表达式1、2全为true时,其表达式的结果为true

表达式1||表达式2:当表达式1、2有一个为true时,其结果为true

!表达式:如果表达式的结果为true,则取反后为false,反之为true

&&

表达式1表达式2表达式1&&表达式2
truetruetrue
truefalsefalse
falsetruefalse
falsefalsefalse

||

表达式1表达式2表达式1
truetruetrue
truefalsetrue
falsetruetrue
falsefalsefalse

!

表达式!表达式
truefalse
falsetrue

运算符的优先级(理解)
  • () 优先级最高

  • 一元算术运算符 ++ – !

  • 二元算数运算符 先 * / % 后 + -

  • 关系(判断)运算符 > >= < <=

  • 关系(相等)运算符 == != === !==

  • 逻辑运算符 先&& 后|| 赋值运算符 =


数据类型转换

其它数据类型转换number

转换的方式有两大类

  1. 隐式类型转换 (+ - * / %)

    var num = "200"; 
    num = +num;
    console.log(typeof num);// number
    
    var n1 = "30";
    n1 = n1 - 0;
    console.log(typeof n1);// number
    
    var n2 = "40";
    n2 = n2 * 1;
    console.log(typeof n2);// number 
    
    var n3 = "50";
    n3 = n3 / 1;
    console.log(typeof n3); // number 
    
    var n4 = "60";
    n4 = n4 % 10 ;
    console.log(typeof n4); // number 
    
    // boolean  null  undefined都可以使用上述方式进行转化,能转成对应的值则转,不能转则为NaN
    :
    console.log(typeof +true);
    console.log(tppeof +null);
    console.log(typeof +undefined);
    
  2. **显式(强制)类型转换,就是使用一些方法或是函数来进行的转化 **

    • Number() Number()可以把任意值转换成数值
    :
    var num1 = Number(true);         //true返回1  false返回0
    var num2 = Number(undefined);   //返回NaN
    var num3 = Number("hello");     //返回NaN
    var num4 = Number("   ");       //如果是空字符串返回0
    var num5 = Number(123);         //返回123,如果是数字,简单返回
    var num6 = Number("123abc");    //返回NaN
    var num7 = Number("abc123");    //返回NaN
    var num8 = Number(null);        //返回0
    
    

    特点: a.如果转换的内容可以转成数字,那么就直接返回这个内容对应的数字。 b.如果不可以转换那么返回NaN. c.如果在内容中出现小数,那么小数会保留。 d.如果内容为空,那么转换成0

    • parseInt() parseInt()把字符串转换成整数
    var num1 = parseInt("12.3abc");  //返回12,如果第一个字符是数字会解析直到遇到非数字结束
    var num2 = parseInt("abc123");   //返回NaN,如果第一个字符不是数字或者符号就返回NaN
    var num3 = parseInt("");         //空字符串返回NaN,Number("")返回0
    var num5 = parseInt("10");       //返回10
    var num4 = parseInt("0xA");      //返回10
    

    特点: a.如果转换的内容可以转成数字,那么就直接返回这个内容对应的数字。 b.如果不可以转换那么返回NaN. c.如果带有小数,那么会去掉小数,而不是四舍五入。 d.如果第一个字符是数字,则继续解析直至字符串解析完毕或者遇到一个非数字符号为止.

    • parseFloat() parseFloat()把字符串转换成浮点数
    parseFloat()和parseInt非常相似,不同之处在与
    parseFloat会保留小数,如果解析的内容里只有整数,也会解析成整数.
    具体示例,可以将上面案例的parseInt改成parseFloat来查看区别
    

其它数据值转换成string

转换的方式有两大类

  1. 隐式类型转换 +

    • +的两边只要有一边是string类型,则在运算的时候,会进行字符串的连接
    var baseSalary = 5000;
    var tiCheng = prompt('请输入张三这个月的工资提成'); // 假设是10000
    var salary = baseSalary + tiCheng;
    console.log(500010000);// 输入的是字符串类型的值,因为凡是用户输入的值都是字符串类型
    
    其它:
    var a = null;
    a = a + "";
    console.log(typeof a+"");        // string
    
    var b = undefined;
    b = b + "";
    console.log(typeof b);             // string 
    
    var c = true;
    c = c + "";
    console.log(typeof c);            // string
    
  2. 显式(强制)类型转换

    • .toString方法 几乎每一个值都有toString()方法
    例如:
    
     var age = 18;
     var ageString = age.toString();
     console.log(ageString); 
     // 结果 "18"
    
     var result = true; var resultString = result.toString(); 
     console.log(resultString); // 结果 "true"
     
     
     数值类型的toString(),可以携带一个参数,输出对应进制的值 var num = 10;
    
     console.log(num.toString()); //"10" 默认是10进制
    
     console.log(num.toString(10)); //"10"
    
     console.log(num.toString(8)); //"12"
    
     console.log(num.toString(16)); //"a"
    
     console.log(num.toString(2)); //"1010"
    
    • String()
    例如:
    
    
    
     var age = 18; console.log(String(age)); // 结果 “18”
    
     var result = true; console.log(String(result)); // 结果"true"
    
     console.log(String(undefined)); // 结果"undefined"
     
     
     
      String()函数存在的意义:有些值没有toString(),这个时候可以使用String()。
    
     比如:undefinednull
    

其它数据值转换成布尔类型

转换的方式有两大类

  1. 隐式类型转换

    • !!
    var a = "100";
    a = !!a;
    console.log(typeof a);
    
  2. 显式(强制)类型转换

     Boolean()函数 
     例如: var b = Boolean("123");
      //返回true 流程控制语句会把后面的值隐式转换成布尔类型
     例如: var message; if (message) { //会自动把message转换成false //todo... }
    

    转换为false的值:false、“”、0和NaN、null、undefined

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值