博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS基本概念 -- 操作符 -- 一元操作符
阅读量:6999 次
发布时间:2019-06-27

本文共 2676 字,大约阅读时间需要 8 分钟。

ECMA-262 描述了一组用于操作数据值的操作符,包括算术操作符(如加减)、位操作符、关系操作符、相等操作符。ECMAScript操作符能够适用于很多值,例如字符串、数字值、布尔值甚至对象。不过在应用于对象时,相应的操作符通常会调用对象的valueOf() toString()方法,以便取得可操作的值。

1. 一元操作符

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

  • 递增和递减操作符
    • 前置型
      //1. 前置递增操作var age = 29;alert(++age);    //30/* * 在这个例子中,前置递增操作符把age的值变成了30, * 实际上,执行这个前置递增操作与执行以下操作的效果相同 */var age = 29;age = age + 1;//2. 前置递减操作var age = 29;alert(--age);    //28/* * 在这个例子中,前置递减操作符把age的值变成了28, * 实际上,执行这个前置递减操作与执行以下操作的效果相同 */var age = 29;age = age - 1;

      执行前置递增和递减操作符时,变量的值都是在语句被求值以前改变的。

      //前置递增和递减操作 与执行语句的优先级相等,因此整个语句从左至右被求值var age = 29;var anotherAge = --age +2;alert(age);    //28alert(anotherAge);//30var num1 = 2;var num2 = 20;var num3 = --num1 + num2;var num4 = num1 + num2;alert(num3);    //21alert(num4);    //21
    • 后置型:递增和递减操作是在包含他们的语句被求值之后执行的
      var age = 29;alert(age++);    //29/* * 把递增操作符放在变量后面并不会改变语句的结果,因为递增是这条语句的唯一操作 * 但当语句中还包含其他操作符时,上述区别就会非常明显了 */var num1 = 2;var num2 = 20;var num3 = num1-- + num2;var num4 = num1 + num2;alert(num3);    //22alert(num4);    //21

      这四个操作符不仅适用于整数,还可以用于字符串、布尔值、浮点数和对象。在应用于不同值时,递增和递减操作符遵循下列规则。

      //1. 在应用于一个包含有效数字字符的字符串时,先将其转换为数字,在执行加减1的操作,字符串变量变成数值变量var str1 = "123";alert(++str1);    //124var str2 = "0xa";    alert(++str2);    //11 可以识别十六进制数var str3 = "070";alert(++str3);    //71//2.在应用于一个不包含有效数字字符的字符串时,将变量值设置为NaN。字符串变量变成数值变量var str1 = "123ab";alert(++str1);    //NaNvar str2 = "ab123";alert(++str2);    //NaNvar str3 = "chen";alert(++str3);    //NaN//3.在应用于Boolean时,false转换成0,true转换成1,在执行加减1操作。布尔变量变成数值变量var b1 = false;alert(++b1);    //1var b2 = true;alert(++b2);    //2//4.在应用于浮点数值时,执行加减1操作var f = 1.1;alert(--f);    //0.10000000000000009(由于浮点舍入错误所致)/* *5.在应用于对象时,先调用对象的valueOf()方法,以取得一个可供操作的值, *  然后对改值应用前述规则。 *  如果结果是NaN,则调用toString()方法后再应用前述规则。 *   */var o = {    valueOf: function(){        return -1;    }};alert(--o);    //-2alert(typeof o);//number
  • 一元加和减操作符
    • 一元加操作符以一个加号(+)表示,放在数值的前面,对数值不会产生任何影响。在对非数值应用一元加操作符时,该操作符会像Number()转型函数一样对这个值执行转换。
      var num = 25;num = +num;alert(num);    //25var s1 = "01";alert(+s1);    //1   值变成数值1alert(typeof s1);//stringalert(typeof +s1);//numbervar s2 = "1.1";alert(+s2);    //值变成数值1.1var s3 = "z";alert(+s3);    //值变成NaNvar b = false;alert(+b);    //值变成数值0var f = 1.1;alert(+f);    //    1.1  值未变var o = {    valueOf: function(){        return -1;    }}alert(+o);    //值变成数值-1
    • 一元减操作符主要用于表示负数。在用于非数值时,遵循与一元加操作符相同的规则。
      var num = 22;num = -num;alert(num);    //-22var s1 = "01";alert(-s1);    //值变成了数值-1var s2 = "1.1";alert(-s2);    //值变成了数值-1.1var s3 = "cc";alert(-s3);    //值变成了NaNvar f = 1.1;alert(-f);    //变成了-1.1var b = true;alert(-b)    //值变成了-1var o ={    valueOf: function(){        return -1;    }}alert(-o);//值变成了数值1

转载于:https://www.cnblogs.com/PrajnaParamita/p/5829713.html

你可能感兴趣的文章