• 第四章 javaScript运算符


     目录:

    一、自增、自减运算符

    二、布尔操作符(!、&&、||)

    三、乘性操作符(乘法、除法、取模)

    四、加法

    五、关系操作符

     

    一、自增、自减运算符:

    ++/--在前,则先运算再后续工作。在后则先后续工作再运算。比如:

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>第三章 运算符</title>
    </head>
    <body>
    <h1>javaScript运算符</h1>
    <script>
    var a =3;
    alert(a++);   //3  先alert之后再自增。
    alert(a);     //4
    </script>
    </body>
    </html>

    一些特性:当操作对象不是有效数字时,javaScript会自动转换操作对象的类型。

    • 如果是字符串,并且是由有效的数字字符组成的,那么转换为数值,如果不是有效的数字字符,则转换为NaN,空字符串转换为0.
    • false转换为0,true转换为1。
    • 操作对象是Object类型时,调用valueOf()方法,如果返回NaN继续调用toString()方法,然后再按照上边的规则继续转换。
      <script>
      var a = true;
      var b = false;
      var c = "18.3";
      var d = "18d2.4";
      var e = new Object();
      var f = "";
      alert(++a);     //2,true转换为1后自增
      alert(++b);     //1,false转换为0后自增
      alert(++c);     //19.3,字符串含有有效的数字字符,转换为数值型自增
      alert(++d);        //NaN,字符串不含有有效的数字字符,转换为NaN
      alert(++e);     //Nan,调用e的valueOf()方法,然后返回NaN,继续调用toString()方法,还是NaN,无效数字字符串
      alert(++f);     //1,空字符串转换为0,然后自增
      </script>

    二、布尔操作符(!、&&、||):

    !:逻辑非操作符:它会首先将操作数转换为布尔值,然后取反,遵循以下规则:

    • 操作数是对象:返回false。
    • 操作数是空字符串,返回true。
    • 操作数是非空字符串,返回false。
    • 操作数是数值0,返回true。
    • 操作数是任意非0数值(包括Infinity),返回false。
    • 操作数是null,NaN,undefined,返回true。

    !!:两次逻辑非操作相当于执行Boolean()函数。

    &&:逻辑与操作属于短路操作,即如果第一个操作数能够决定结果,那么就不会再对第二个操作数求值。如果第一个操作数是false,则无论第二个操作数是什么值,结果都不再可能是true了。

    逻辑与操作可以用于任何类型的操作数,而不仅仅是布尔值,它遵循以下规则:

    • 如果第一个操作数是对象,则返回第二个操作数。
    • 如果第二个操作数是对象,则只有第一个操作数的求职结果为true的情况下才会返回该对象。
    • 如果两个操作数都是对象,则返回第二个操作数。
    • 如果有一个操作数是null,则返回null(除false操作数外)。
    • 如果有一个操作数是NaN,则返回NaN(除false操作数外)。
    • 如果有一个操作数是undefined,则返回undefined(除false操作数外)。
    <script>
    var a = true;
    var b = false;
    var c = "18.3";
    var d = "18d2.4";
    var e = new Object();
    var f = new Object();
    var x=null;
    
    alert(b && c);  //false,因为b就是false,所以永远不会是true。
    alert(a && e); //Object,因为a为true,并且第二个操作数是对象,则返回对象。
    alert(e && b);  //false,因为e是对象,所以返回第二个操作数false
    alert(e && a);  //true,因为e是对象,所以返回第二个操作数true
    alert(e && f);  //Object,因为都是对象,所以返回第二个f。
    alert(a && x);  //undefined,因为x是undefined,并且a为true,如果a为false,则整个表达式是false,不是undefined。
    // ---------------------------
    alert(a && (++c));  //++c运算了,返回结果是19.3,首先a为true,然后++c是19.3,但是19.3变成了一个Object,所以返回了Object
    alert(c);  //19.3,可以看到++c运行了。
    c = 0;
    alert(b && (++c));  //++c运算了,返回结果是false,因为b是false,所以++c根本不计算了
    alert(c);  //0
    </script>

    ||:逻辑或与逻辑与差不多,也是短路操作符,如果第一个操作结果是true,就不会对第二个操作数进行计算,并且遵循以下结果:

    • 如果第一个操作数是对象,则返回第一个操作数。
    • 如果第一个操作数的求值结果为false,则返回第二个操作数。
    • 如果两个操作数都是对象,则返回第一个操作数。
    • 如果两个操作数都是null、NaN、undefined,则返回null、NaN、undefined。

    由于||是短路操作符,所以可以利用这一特性为变量赋值提供后备操作。比如:

    var my = var1 || var2,这样,var1优先赋值给my,如果var1没有有效值,则var2会赋值给my。

     三、乘性操作符(乘法、除法、取模):

    如果某个操作数不是数值型,javaScript会在后台调用Number()函数进行转换,然后进行计算。true转为1,false转为0,空字符串转为0。

    <script>
    var a ="";
    var b = 3;
    var c = NaN;
    var d = undefined;
    var e = true;
    var f = false;
    
    alert(a*b);     //0,因为空字符串会转为0
    alert(e*b);    //3,true转换为1
    alert(f*b);  //0,true转换为0
    </script>

     四、加法:

    • 如果操作数有一个是字符串,则如下规则:
    • 如果两个都是字符串,则把两个字符串连接起来。
    • 如果有一个是字符串,则将另一个操作数转换为字符串,然后再连接起来。
    • 如果有一个是对象、数值或者布尔值,则调用他们的toString()方法,然后按照上边的规则执行。undefined和null只只会取得本身的字符,即“undefined”、"null"。
    <script>
    var a="abc";
    var b = 123;
    var c = undefined;
    var d = null;
    var e ="123";
    alert(a+b);         //abc123
    alert(a+c);        //abcundefined
    alert(a+d);     //abcnull
    alert(b+e);   //123123
    </script>

    也就是如果字符串类型要进行数值类型的相加,必须要转换为数值类型后才可以!

    五、关系操作符:

    关系操作符:

    • 在进行字符串比较时,比较的是两个字符串中对应位置的每个字符的字符编码值,也就是在ascii编码里的顺序值,而不是按字母表的顺序返回比较。
    • undefined和null是相等的。
    • 如果两个操作数都是对象,如果都指向同一个对象则返回true,否则返回false。
    • NaN和NaN不相等。
    • 如果一个操作数是数值另一个是字符串,则把字符串转换为数值进行比较。
    • 如果操作数是对象,则调用valueOf()方法,如果没有则调用toString()方法,再按照上边的顺序进行计算。
    <script>
    var a="123";
    var b = 123;
    var c = "456";
    
    alert(a==b);  //true,a转换后相等
    alert(a<c);  //true,按照字母表“1”==49,“4”==52,所以是4大
    </script>
  • 相关阅读:
    VS2015 update3 安装 asp.net core 失败
    connection timeout 和command timeout
    安装.NET Core
    xamarin 学习笔记02- IOS Simulator for windows 安装
    xamarin 学习笔记01-环境配置
    BotFramework学习-02
    BotFramework学习-01
    正则表达式
    获取指定字节长度的字符串
    pdf生成器
  • 原文地址:https://www.cnblogs.com/jingubang/p/4624013.html
Copyright © 2020-2023  润新知