• js基础概念-操作符


    操作符是操作数据值的符号,也叫做运算符。

    按照操作个数分为:一元运算符,二元运算符,三元运算符。

    按功能分为:位操作符,布尔操作符,乘性操作符,加性操作符,关系操作符,关系操作符,相等操作符,条件操作符,赋值操作符,逗号操作符。

    一元操作符,只能操作一个值的操作符。

    1.递增递减操作符,执行前置递增递减的操作符时都是在语句请求前执行的,在计算机科学领域上讲,这种情况通常叫做副效应。

    规则:

    字符串是有限数字字符转化成数字值在加减1如果不包含有效数字,转换成NaN

    浮点型正常转换加减1

    布尔型false将转换成0加减1true相反

    对象,先使用valueof()方法,取得一个可操作的值,如果是NaN在使用toString()方法,对象变量变成数值变量。

     

    2,一元加或减操作符

    加操作符,放在数值的前面,对大小没有影响。如果是非数值类型,按照上面规则转化。

    减操作符,放在数值的后面,数值大小取反。如其他类型,按照规则进行转化。

     

    位操作符

    是最基本层次上的,按内存表示数值的位来操作数值。

    都是用32位进行操作的,整数以纯二进制格式存储,31位中的每一位都表示2的幂次方,第一是2的0次幂,第二位2的1次幂,以此类推,没用到位用0补充。负数,也是二进制存储,但使用补码。补码分三步,1,求这个数值绝对值的二进制码,例如(求-18的二进制补码,先求18的二进制码)。2,再求二进制反码,就是把所有的0替换成1,所有的1换成0。3,得到的二进制反码在加1。

    例如-18的二进制码:

    0000 0000 0000 0000 0000 0000 0001 0010

    然后求二进制反码,也就是0和1互换

    1111 1111 1111 1111 1111 1111 1110 1101

    最后在二进制反码加1

    1111 1111 1111 1111 1111 1111 1111 1110

    但是ECMAscript不会让我看见这些,我们只需要理解这个转换过程就好,在以二进制字符串形式输出负数时,我们看到的还是负数绝对值二进制码前面加一个负号。

     

    1,按位非(NOT)

    按位非以一个波浪线(~)表示,就是数值的反码。例如:

    var num1 =25; //二进制0000 0000 0000 0000 0000 0000 0000  0001  1001

    var num2 =~num; //二进制 1111 1111 1111 1111 1111 1111  1111 1111 1110 0110

    alert num2; //-26

    也就是操作值的负值减一。

    2,按位或(AND)

    按位与由一个(&)表示。将两个数值的每一位对齐,如果两个数值都为1,结果为1,其它都为0。

    3,按位或(OR)

    按位或由一个竖线(丨)表示。也是将两个数值每一位对齐,只有有一个为1,结果就为1,两个都是0的情况下才返回0。

    4,按位异或(XOR)

    由(^)表示,只有一个1才返回1。

    5,左移

    由(<<)表示,会将所有数值的所有位向左移动指定的位数。以0补充移动的位数。

    6,有符号的右移

    由(>>)表示,会将所有数值的所有位向右移动指定的位数。以隐藏的符号位填充空白的位数。

    7,无符号右移

    由(>>>)表示,和有符号右移一样,但是以0填充空位,而且无符号二进制码当成正数二进制码,负数以其绝对值的二进制码补码形式表示,因此导致无符号右移后结果非常大。

     

    布尔操作符

    有3个:非(NOT),与(AND),或(OR)。

    1,逻辑非(!)表示,将它操作数转换成布尔值,然后取反。

         {对象返回false;空字符串返回true;非空返回false;操作数的数值位0返回true;任何非0返回false;null返回true;NaN返回true;Undefined返回true。}

         也就是将一个值转换成布尔值,然后对其取反。

    2,逻辑与(&&)

         属于短路操作,即如果有一个操作数决定结果,就不会对第二个操作数求值。如果第一个位false,无论第二个为什么值,结果都不可能为true。

    3,逻辑或(||)

          只有有一个满足条件为true ,就返回为true那个为操作数。

     

    乘性操作符

    定义了3个乘性操作符:乘法,除法和求模。

    1,乘法(*)表示计算连个数乘积。和数学中乘法一样,要是超出范围,返回Infinity或-Infinity

    2,除法(/)第二个数除以第一个数。

    3,求模(余数)由(%)表示。

     

    加性操作符

    1,加法(+)都是数值正常加法运算,如果:都是字符串,将两拼接起来。如一个是数值,一个是字符串,将数值转换成字符串,然后字符串拼接。如果有一个操作数是对象,数值或布尔值,调用toString()方法。对于underfined和null调用String()函数取得相应的字符串。

    *可以运用括号告诉浏览器那个先执行。

    2,减法(-)和加法类似。

     

    关系运算符

    大于(>)小于(<)大于等于(>=)小于等于(<=)

    比较规则如下:

    如都是数值,执行数值比较。

    如两个操作符都是字符串时,则比较两个字符串对应的字符编码值。

    如一个是数值,则另一个操作数转换成一个数值,然后执行数值比较。

    如一个操作数是对象,则调用这个对象的valueOf()方法,如果对象没有这个方法用toString()方法,在根据上面规则比较。

    如一个是布尔值,将其转换成数值在比较。

    任何与NaN进行比较都是false。

     

    相等操作符

    1,相等(==)如果相等返回true。不相等(!=)成立返回true,转换规则同上,不同的是null和underfine相等。

    2,全等(===),不全等(!==)在不转换类型的情况下比较。

     

    条件操作符

     

    说白了就是if()else{}语句,也叫三元操作符。

    例如:var max =(num1 > num2) ? num1 :num2;

    就是说如果前面为true取num1赋给max,false取num2赋给max。

     

    赋值操作符

    由(=)表示,也就是二元操作符,就是把右侧的值赋给左边

     

    逗号操作符

     在一条语句中执行多个操作,

    用于声明多个变量。例如:var num1 =1,num2=2,num3=3;

    用于赋值,只会返回最后一项。例如:var num =(5,1,4,8,0);//num的值为0。

  • 相关阅读:
    对spring web启动时IOC源码研究
    对volatile关键字的理解
    [书籍分享]0-009.微信营销与运营解密:利用微信创造商业价值的奥秘
    [JavaWeb基础] 002.JSP和SERVLET初级入门
    [Objective-C] 005_Category(类别)
    [PHP学习教程
    读Pyqt4教程,带你入门Pyqt4 _008
    读Pyqt4教程,带你入门Pyqt4 _007
    宝宝巴士安卓框架介绍
    [安卓基础] 006.打开另一个Activity
  • 原文地址:https://www.cnblogs.com/cqy1125/p/9788672.html
Copyright © 2020-2023  润新知