zoukankan      html  css  js  c++  java
  • 一元操作符——递增和递减操作符(第一次写博客,紧张.)

    一元操作符,即只能操作一个值的操作符,是JS中最简单的操作符。

    1.递增和递减操作符

      分为2个版本:前置型和后置型。若使用前置递增操作符给一个数值加1,要把(++)放在数值前面:

        var a = 1;++a; ==> var a = 1;a = a+1;

      递减操作与递增操作类似,即把(--)放在数值前面。 

      后置型的话,与前置型语法一样,只是把(++/--)放在数值后面,但是,它与前置性有一个很大的区别,在于后置型的操作,是在包含它的语句执行完了之后才执行;而前置型的操作是在语句被求值之前改变。这样说肯定是很那么懂,看完下面的例子就懂了:

      前置型:var a = 20;

          var b = 20; 

          var c = ++ a + b;

          alert(a);  ==》21

          alert(b);  ==》41

    这个看起来没什么问题,输出a为(a+1),c为(a+1+b);

      后置型:var a = 20;

          var b = 20;

          var c = a++ + b;

          alert(a); ==>21;

          alert(c); ==>40;

    这里问题就出现了,为什么c是40而不是41呢?这里我们再来看一下上面这句话后置型的操作,是在包含它的语句执行完了之后才执行;我们输出了c,对于后置型来说,因为在a++后面还有操作,所以就先执行a+b,将结果赋值给c,然后再执行a++,所以a的结果是加过后的结果,c的结果是没有加之前的操作。

    2.应用于不同的值

    上面的四种操作符对所有的值都适用,也就是它们不仅适用于整数,还可以用于字符串、布尔值、浮点数值和对象 。但它们都遵从下面的规则:

      1: 在应用于一个包含有效数字字符的字符串时,先将其转换为数字值,再执行加减 1 的操作。 var s1 = "3";s1++; ==>4

      2: 在应用于一个不包含有效数字字符的字符串时,将变量的值设置为 NaN 。var s2 = "aaa";s2++; ==>NaN  

      3: 在应用于布尔值 时,若果是true,就将转换成1,在执行操作;如果是false,就将转换成0。var b1 = true;b1++; ==>2

      4: 在应用于浮点数值(小数)时,执行加减 1 的操作。var n1 = 3.1;n1++; ==>4.1

      5: 在应用于对象时,先调用对象的 valueOf()方法,以取得一个可供操作的值,在根据上面的规则进行操作;

      var o = {
        valueOf: function() {
          return -10;
        }
      };

      o++;  ==>-9

    3.一元加和减(+/-)操作赋

    这两个操作符对于数值的操作和数学上并没有区别,只是在对于非数值的操作中不同。

    在一元加操作符中,对非数值的操作,该操作符会像 Number()转型函数一样对这个值执行转换 布尔值 false true 将被转换为 0 1

    字符串值会被按照一组特殊的规则进行解析,对象是先调用它们的 valueOf()或 toString()方法,再转换得到的值 。

    var s1 = "01";
    var s2 = "1.1";
    var s3 = "z";
    var b = false;
    var f = 1.1;
    var o = {
    valueOf: function() {
    return -1;
    }
    };
    s1 = +s1; // 值变成数值 1
    s2 = +s2; // 值变成数值 1.1
    s3 = +s3; // 值变成 NaN
    b = +b; // 值变成数值 0
    f = +f; // 值未变,仍然是 1.1
    o = +o; // 值变成数值-

    一元减操作符主要是表示负数,而当应用于非数值时,一元减操作符遵循与一元加操作符相同的规则,最后再将得到的数值转换为负数 。

    var s1 = "01";
    var s2 = "1.1";
    var s3 = "z";
    var b = false;
    var f = 1.1;
    var o = {
    valueOf: function() {
    return -1;
    }
    };
    s1 = -s1; // 值变成了数值-1
    s2 = -s2; // 值变成了数值-1.1
    s3 = -s3; // 值变成了 NaN
    b = -b; // 值变成了数值 0
    f = -f; // 变成了-1.1
    o = -o; // 值变成了数值 1

  • 相关阅读:
    每日总结
    体温登记app(大年初一要收的作业)慢慢更,这个写完了
    2021/01/31周学习总结
    2021/01/24周学习总结
    从小工到专家
    构建之法阅读笔记
    2021/01/17周学习总结
    人月神话阅读笔记
    利用Word制作Kindle用的6寸PDF电纸书
    面试题-谈谈封装和抽象的区别(转)
  • 原文地址:https://www.cnblogs.com/rongy/p/6049073.html
Copyright © 2011-2022 走看看