递增递减++ / 赋值运算符 / 大于小于 / 相等操作符 / 运算符优先级

递增递减运算符

前置型:把运算符写到变量的前面              ++num1

后置型:把运算符写到变量的后面              num2++

        递增++和递减--运算就是通过不断的加 1 或减 1,然后把结果赋值给左侧操作数,以实现改变自身结果的一种简洁方法。

        作为一元运算符,递增运算符和递减运算符职能作用于变量、数组元素或对象属性,不能作用于直接量。根据位置不同,

        可以分为 4 种运算方式:

                1.前置递增(++n):先递增,再赋值。

                2.前置递减(--n):先递减,再赋值。

                3.后置递增(n++):先赋值,再递增。

                4.后置递减(n--):先赋值,再递减。

        递增和递减是相反的操作,在运算之前都会试图转换值为数值类型,如果失败则返回 NaN

递增递减++ / 赋值运算符 / 大于小于 / 相等操作符 / 运算符优先级_第1张图片

单独对一个操作数使用 递增或递减 不和别的发生计算,是没有关系的,结果都是一样的

            一旦需要和别的发生计算:

                前置型:num1基础上,进行+1的操作,然后和2进行相加         

var result1 = ++num1 + 2;       //3         3         先自增,再加2

                后置型:num2基础上,和2进行相加

                注意:在计算之前,并没有发生自增的情况,但是计算完成之后,还是会自增的。

var result2 = num2++ + 2;       //3         2         先加2,再自增


赋值运算符

        num1 = num1 + 10;           // num1 += 10;

        num1 = num1 - 10;            // num1 -= 10;

        num = num % 5;                // num %= 5;

        num = num / 5;                  // num /= 5;

        num = num * 5;                  // num *= 5;

        alert(num);


大于小于

        关系操作符(比较操作符),最终返回的结果是一个布尔值

            左右两侧如果都是数值,就比较数值的大小

            注意如果不是数字的情况

                1. 字符串的比较

                    字符串的比较是逐位比较的,并且比较的是字符编码大小

                2. 如果比较中出现了NaN,那么结果就是false

                3. null 、undefined、true、false,最终会根据对应的规则进行转换。

                http://www.fengfly.com/document/ECMAScript5.1/ 规则查看地址

var str1 = 'A';

var str2 = '3';

alert(str1>=str2);               //23 > 3 没有转换成数字进行比较

            23 中的2  对应的字符编码是 50

            3  中的3  对应的字符编码是 51

            50>=51 =>false


相等操作符

        相等 ==

        赋值 =

        ! 取反

         不等 !=

         全等 ===

         全不等 !==

相等和全等

        虽然都是比较两个值是否相等,但是在比较的时候,它们分别遵循不一样的规则。

相等    ==

        比较两个操作数之间是否相等,如果相等返回true,如果不相等返回false,在比较的时候,会进行隐式类型转换。

alert(1 == 1)        //true

alert('1' == 1)        //true

alert(true == 1)        //true

隐式转换规则

        NaN不等于任何类型的数值,包括自己本身,所以一定返回false;

        如果都是String类型的话,比较字符编码值,如果完全一致,则返回true,否则返回false;

        如果两侧都是Number类型数值,比较值是否相同;

        如果两边都是Object类型,则比较地址是否一致;

        null == undefined 返回true;

        如果一侧是String,一侧是Number,将String(指的是不是数值类型的字符串)转换为NaN之后,进行比较;

        如果一侧是Boolean,则把布尔值转换为Number类型后,再根据上述规则进行比较;

        具体参照ECMAScript规则


全等  ===

        全等也是比较两个操作数之间是否相等的,但与==不同,它从以下两个点进行考虑:

1.值是否相等

2.类型是否相等

        alert(1 == 1)        //true

        alert('1' == 1)        //false

        alert(true == 1)        //false

        alert(null === undefined);

        alert(null == undefined)

        因为会判断类型,所以在这里并不会进行隐藏式类型的转换

                1.一旦两个操作数的数据类型不同,直接返回false;

                2.一旦出现NaN,返回结果false;

                3.当类型一致的情况下,比较值是否相同,如果不同返回false,如果相同返回true;


不等和全不等

        和以上的相等和全等一样,不等和全不等在比较的时候

        前者只注重值,并且会进行隐藏式类型的转换,转换规则与相等是一致的,只是返回的结果正好是相反

        后者在注重值的同时,还会注重类型是否相同,转换规则与全等是一致的,只是返回的结果正好是相反


运算符优先级

        var result1 = 2 + 3;        + 加法运算符优先于= 赋值运算符

        alert(result1);     //5

        var result2 = 2 + 3 * 2;       //乘法运算符优先级高于加法运算的

        var result3 =  1 + 2 == 5 % 0;

        alert(result3);     //false         执行顺序   % +  ==  =


你可能感兴趣的:(递增递减++ / 赋值运算符 / 大于小于 / 相等操作符 / 运算符优先级)