zoukankan      html  css  js  c++  java
  • JavaScript基本概念(操作符)

    一元操作符

    一元操作符在处理所有的非数值时,相当于将该值经过Number()转换成数值,如 +"12" 将把 "12" 字符串转换为数字。

    位操作符

      1. 负数在计算机上以二进制补码的形式储存,补码等于原码的反码加1,ECMAScript在以二进制字符串形式输出一个负数时,我们看到的只是这个负数绝对值的二进制码前面加上一个符号(而不是输出32位二进制)如:
        var num = -18;
        alert(num.toString(2));  // "-10010"
        

          

      2. 对特殊的NaN和Infinity值应用位操作符时,这两个值都会被当成0来处理。
      3. 进行有符号的右移(>>)操作时,其左边以符号位的值来填充空位,进行无符号的右移(>>>)操作时,以0来填充空位.

    布尔操作符

    逻辑非

       对非布尔类型的值进行逻辑非操作时,会先使用Boolean()将值转换为布尔类型。

    逻辑与

      1. 属于短路操作,且并不一定返回布尔类型。
      2. 如果第一个操作数用Boolean()函数可以转换为true时,返回第二个操作数。
      3. 如果第一个操作数是false,null,NaN,undefined时,返回第一个操作数。

    逻辑或

      1. 原理跟逻辑与差不多。
      2. 我们可以利用下面的例子来避免为变量赋null或undefined值,如:
    var myObject = preferredObject || backupObject
    

      其中若第一个变量存在则优先赋予myObject第一个变量,不然赋予第二个变量

    乘性操作符

    注:如果参与乘性计算的某个操作符不是数值时,后台会先使用Number()转型函数将其转换为数值。

    乘法

      1. 如果有一个操作数是NaN,则结果是NaN;
      2. 如果是Infinity与0相乘,则结果是NaN;
      3. 如果Infinity与非0数值相乘,则结果是Infinity或-Infinity;
      4. 如果是Infinity与Infinity相乘,则结果是Infinity。

    除法

      1. 如果有一个操作数是NaN,则结果是NaN;
      2. 如果是Infinity被Infinity除,则结果是NaN;
      3. 如果是零被零除,则结果是NaN;
      4. 如果是非零的有限数被零除,则结果是Infinity或-Infinity;
      5. 如果是Infinity被任何非零数值除,则结果是Infinity或-Infinity。

    求模

      1. 如果被除数是无穷大值而除数是有限大值,则结果是NaN;
      2. 如果被除数是有限大的数值而除数是零,则结果是NaN;
      3. 如果是Infinity被Infinity除,则结果是NaN;
      4. 如果被除数是有限大的数值而除数是无穷大的数值,则结果是被除数;
      5. 如果被除数是0,则结果是0。

    加性操作符

    加法

    如果有一个操作数是字符串,则将另一个操作数使用String()转型函数转换为字符串,然后将两个字符串拼接起来;

    减法

    如果操作数是非数值,后台调用Number()转型函数先将其转换为数值在进行运算。

    关系操作符

    1. 如果两个操作数是数值,则执行数值比较;
    2. 如果两个操作数都是字符串,则比较两个字符串对应的字符编码值;
    3. 如果一个操作数是数值,则后台将使用Number()函数将其转换为数值再比较;
    4. 如果一个操作数是对象,则调用对象的valueOf()方法,用得到的结果按照前面的规则进行比较,如果对象没有valueOf方法,则调用toString()方法,并用得到的结果进行比较。
    5. NaN作为操作数时,NaN < 3 和 NaN >= 3 皆返回false。

    相等操作符

    注:相等和不相等---先转换再比较,全等和不全等---仅比较而不转换

    相等和不相等

      1. null和undefined是相等的;
      2. 如果只有一个操作数是数值,则将另一个操作数转换为数值再比较(偏向于比较数字);
      3. 如果两个操作数都是对象,则比较它们是不是同一个对象。如果两个操作数都指向同一个对象,则相等操作符返回true。

    条件操作符

    如下所示:error这个变量未定义,但是并未抛出错误。

    abc == true ? 12 : error

    in运算符

      in运算符希望它的左操作数是一个字符串或可以转换为字符串,希望他的右操作数是一个对象,如果右侧的对象拥有一个名为左操作数值的属性名,那么表达式返回true。

    instanceof运算符

      instanceof运算符希望左操作数是一个对象,右操作数标识对象的类。如果左侧的对象是右侧类的实例,则表达式返回true。所有的对象都是Object的实例。如果instanceof的左操作数不是对象的话,instanceof返回false,如果右操作数不是函数,则抛出一个类型错误异常。

  • 相关阅读:
    204. Count Primes (Integer)
    203. Remove Linked List Elements (List)
    202. Happy Number (INT)
    201. Bitwise AND of Numbers Range (Bit)
    200. Number of Islands (Graph)
    199. Binary Tree Right Side View (Tree, Stack)
    198. House Robber(Array; DP)
    191. Number of 1 Bits (Int; Bit)
    190. Reverse Bits (Int; Bit)
    189. Rotate Array(Array)
  • 原文地址:https://www.cnblogs.com/lijiazhan/p/4024047.html
Copyright © 2011-2022 走看看