zoukankan      html  css  js  c++  java
  • javascript--运算符

    运算符与操作数的组合就是表达式

    运算符分为:算术运算符,比较运算符,逻辑运算符,赋值运算符,一元运算符,三元运算符以及特殊运算符

    1.算术运算符

      +  —   *   /    %   ++   --     //都可进行数值的运算,隐式调用Number,转化为数值进行计算,不能转换返回NaN

      1)+  :加号的二义性

        a.数值的运算

        b.字符串的连接

          任何的数据类型和字符串相加表示连接

    var name="张三";
    var age=12;
    var str= "我的名字叫"+name+",我的年龄是"+age+"岁";
    console.log(str)   
    //我的名字叫张三,我的年龄是12岁
    
    //在EC6中新添加的一种表示连接的方式,` ${变量名} `
    var str1=`我的名字叫${name},我的年龄是${age}岁`
    console.log(str1)
    //我的名字叫张三,我的年龄是12岁
    //效果是一样的

      2)++:进行自增,相当于+1

      a++:先运行再自增

      ++a:先自增再运行

      先看一个例子

    var d=1;               // 1
    console.log(d++);      // 1 d先输出1后自增为2
    d++;                   // 3
    console.log(d);        // 3

      在控制台输出之后,变量b进行了自增

      结合变量的赋值,再来看一个例子

    var num=1;
    var num1=num++;
    console.log(num);    //2
    console.log(num1);   //1    num先赋值给num1为1再自增
    
    var nub=1;
    var nub1=++nub;
    console.log(nub);   //2
    console.log(nub1)  //2

    2.比较运算符

      >  <  >=   <=   ==   ===    !=   !==

      1)比较运算符运算的结果都是布尔值(true false)

      2)==   :比较两个数的值是否相等,进行隐式的数据类型转换

      3)=== :不仅比较值,还要比较两个数据的类型是否相等

    //都是number数据类型时,正常比较
    console.log(1>2);   //true
    //一个是字符串,一个是数值,将字符串转换为数值进行比较,不能转换为数值类型直接返回false
    console.log("1"<2); //true
    //两个字符串之间进行比较,则把第一个值转化为ASII码进行比较
     console.log("ab"<"b");  //true
     console.log("a"<"b");  //true
    //如果一个数值与布尔值进行比较,会把布尔值转化为数值进行比较,true为1,false为0
    console.log(0<true); //true
    //== 比较值的大小是否相同
    console.log(1=="1"); //true
    console.log(""==0);  //true
    console.log(" "==0); //true
    console.log(undefined==null)//true
    //===要求数值、类型都相等 console.log(1==="1"); //false

    3.赋值运算符

      =       +=      -=      *=       /=     %=

      +=:var a=1;   a+=2相当于a=a+2,其它类似

    var a=1;
    a+=2;        //a=3
    console.log(a);  //3
    a*=3;        
    console.log(a);  //9
    console.log(a++);  //9    a=10,但输出值为9
    console.log(++a);  //11  a=11
    a%=2;   
    console.log(a); //2

      同时要注意+的二义性

    var num="3";
    num+=4;
    console.log(num)  //34     +表示连接

    4.逻辑运算符

       &&  ||  !      //与、或、非

      &&:运算符两边有假为假,全真为真              ||:运算符两边有真为真,全假为假          ! :取反,真为假,假为真

      1)逻辑运算符可以对任意类型的数据进行运算,但在运算的过程中会转变为对应的boolean类型值,除了null 、undefined、0、空字符串、false、NaN是false,其余的数值类型都转化为false

      2)&&  、||  隐式调用boolean类型值进行运算,在能判断真假的时候停止,但表达式最后的值不会转化为boolean类型值,返回值是停止值

    console.log(1||2)  //1   
    console.log(1||0)  //1 
    console.log(0||2)  //2
    console.log(0||null) //null
    //"||":有真为真,全假为假,在可以判断的时候停止
    
    console.log(1&&2)  //2
    console.log(1&&0)  //0
    console.log(0&&2)  //0
    console.log(0&&null) //0
    //"&&":有假为假,全真为真,在可以判断的时候停止

      3)!:非运算结果必定是boolean类型值

    console.log(!0)  //true
    console.log(!1)  //false

    5.一元运算符:操作一个数据的运算符

      typeof   !   +(正)    -(负)  ++   --   delete  new

      1)typeof:检测数据类型,返回的结果有:numberstringundefinedobjectooleanfunction

    console.log(typeof("12"));  //string
    console.log(typeof(12));   //number
    console.log(typeof(function () {
    
    }));  //function
    function object(){}
    var obj=new object()
    console.log(obj)    //object
    console.log(typeof(undefined)) //undefined
    console.log(typeof(null)); //object *null是个空对象 console.log(typeof(false));//boolean //typeof的检测结果是字符串类型 var aa=typeof ("") console.log(typeof(aa)); //string

      2)delete:删除对象的属性或方法

    var obj={name:"zhangsan",sex:"man"};
    delete obj.sex;
    console.log(obj.sex) //undefined
    
    
    ps(null删除对象)
    obj=null;
    console.log(obj)   //null

       3)new:用来创建一个对象

    5.三元运算符

      根据表达式的计算结果有条件的为变量赋值

      格式:var 变量=boolean expression ?   条件为真的值:条件为假的值

    var num=1>2?  3:4;
    console.log(num)   //4

    6.特殊运算符

      , :逗号   1)一次声明多个变量   2)函数传多个参数用逗号隔开   3)多个键值对之间用逗号隔开。。。

      ():括号   1)运算的时候有优先级的作用     2)函数的调用     3)正则形成原子分子

    ps:运算符运算过程中有些会涉及到隐式调用,隐式 调用主要包括:

      1)算术运算符调用Number类型,如果能转换为数值进行运算,不能就返回NaN

      2)比较运算符调用Number 

      3)逻辑运算符调用boolearn类型值,但&&   ||  返回的值不是boolearn类型值

      4)三元运算符调用boolearn类型值     

      另外,if语句判定条件也会隐式调用boolearn类型值,条件为真执行

  • 相关阅读:
    mysql 主从架构搭建
    tomcat+nginx 反向代理 动静分离
    ELK(Elasticsearch + Logstash + Kibana)安装部署对nginx的日志收集
    Kibana server is not ready yet出现的原因
    apache+tomcat+单机双实例+动静分离+负载均衡
    docker的基本安装和简单使用+Dockerfile常用指令
    LVS+keepalived+DR 负载均衡高可用
    md5sum摘要
    python爬虫
    python和数据库
  • 原文地址:https://www.cnblogs.com/wykbk/p/6800886.html
Copyright © 2011-2022 走看看