JavaScript基本概念(操做符)

一元操做符javascript

一元操做符在处理全部的非数值时,至关于将该值通过Number()转换成数值,如 +"12" 将把 "12" 字符串转换为数字。java

位操做符函数

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

        

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

 

布尔操做符编码

逻辑非spa

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

逻辑与blog

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

逻辑或ip

    1. 原理跟逻辑与差很少。
    2. 咱们能够利用下面的例子来避免为变量赋null或undefined值,如:
var myObject = preferredObject || backupObject

  其中若第一个变量存在则优先赋予myObject第一个变量,否则赋予第二个变量字符串

 

乘性操做符it

注:若是参与乘性计算的某个操做符不是数值时,后台会先使用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,若是右操做数不是函数,则抛出一个类型错误异常。

相关文章
相关标签/搜索