美文网首页
JavaScript一元操作符

JavaScript一元操作符

作者: 又菜又爱分享的小肖 | 来源:发表于2021-06-19 20:37 被阅读0次

    只能操作一个值的操作符叫做 一元操作符

    1.递增和递减操作符

    前置型

    var age = 21;
    ++age;  // 相当于 age = age + 1;
    --age; // 相当于 age = age -1;
    

    由于前置递增和递减操作于执行语句的优先级相等,因此整个语句会从左到右被求值。接下来再看一个例子:

    var age1 = 2;
    var age2 = 20;
    var age3 = --age1 + age2;// 等于21
    var age4 = age1 + age2; // 等于21
    

    age3之所以等于21是因为age3 = age3 - 1 这步操作才与age2相加的。而变量age4也等于21是因为相应的加法操作使用了age1减去1之后的值。

    后置型

    var age = 20;
    age++; // 21
    

    把递增语句放在变量的后面并不会改变语句的结果,因为递增是这条语句的唯一操作,但是当语句包含其他操作时,区别就非常明显了。例子:

    var age1 = 2;
    var age2 = 20;
    var age3 = age1-- + age2;// 22
    var age4 = age1 + age2; //21
    

    这里可以看到只是将前置递增改成后置递减,就可以立即看到差别。
    在前面这个例子中age3和age4都是21,而这个例子中age3为22,age4为21。
    原因在于:这里再计算age3时使用了age1的原始值来完成加法计算,而age4则使用了递减之后的值。

    应用场景

    不管递增还是递减在任何场景都可适用,也就是说它们不仅仅可以适用于整数,还可以用于字符串,布尔值,浮点数值和对象。
    1. 在应用在一个包含有效数字字符的字符串中,先将其转换成为数字值,在执行+1的操作,字符串变量变成数值变量。
    2. 在应用于一个不包含有效数字的字符串时,将变量的值设置为NaN。
    3. 在应用于布尔值false时,先将其转换为0,true则为1,在执行+1的操作。
    4. 在应用于浮点数值时,直接执行+1操作
    5. 在应用于对象时,会调用该对象的valueOf()方法,取得一个可操作的值,然后对值应用于以上规则,如果结果是NaN,则在调用toString()方法在应用上述规则。
    例如:

    var two = "2"; 
    var three = "w";
    var bool = false;
    var f = 1.1;
    var obj = {
          valueOf: function(){
                 return -1; 
          }
    }
    
    
    two++; //3
    three++; //NaN
    bool++; //1
    f++; //1.1
    obj++; //-1
    
    一元加减操作符

    一个一元加操作符以一个加号(+)表示,放在数值前面,对数值不会产生任何影响。

    var age = 21;
    +age;//21
    

    但是,在对非数值应用一元加操作符时,该操作会像Number()转型函数一样对这个值执行转换。布尔值false和true将被转换为0和1,而对象是先调用valueOf方法或者toString方法,再转换得到的值。

    var two = "2"; 
    var three = "w";
    var bool = false;
    var f = 1.1;
    var obj = {
          valueOf: function(){
                 return -1; 
          }
    }
    
    
    +two; //2
    +three; //NaN
    +bool; //0
    +f; //1.1
    obj++; //-1
    

    一元减操作符主要用于表示负数。

    var age = 21;
    -age; //-21
    

    在将一元减操作符应用于数值时,该值会变成负数,如果应用到非数值时,一元减操作符遵循一元加操作符相同的规则,最后再将得到的数值转换为负数。

    var two = "02"; 
    var three = "w";
    var bool = false;
    var f = 1.1;
    var obj = {
          valueOf: function(){
                 return -1; 
          }
    }
    
    
    +two; //-2
    +three; //NaN
    +bool; //0
    +f; //-1.1
    obj++; //1
    

    相关文章

      网友评论

          本文标题:JavaScript一元操作符

          本文链接:https://www.haomeiwen.com/subject/obdhyltx.html