JS操作符

一元操作符

一元操作符:只操作一个变量的符号

一、自增和自减操作符

就是让变量自己加1或减1,

区别:

前置++ 就是先把变量修改了 再取值操作;

后置++ 就是先取变量的值 然后在加1操作;

无论前置还是后置 既有存值操作也有取值操作;

取值和存值 就是把一个变量保存的数据取出来 把一个计算结果存入变量;

一个变量只能保存一个数据;

补充:++ 的优先级大于+

--操作与++操作一样

二、逻辑操作符

1、逻辑与 &&

             var re=A&&B

            A是一个表达式  B也是一个表达式  re等于A表达式或者B表达式

            (如果A表达式判定为布尔表达式的值的false)re就是A 否则反之为B表达式

            如果re为A表达式 那么B表达式不运行

练习:

           

2、逻辑或(||)

        和逻辑与操作符相似,逻辑或操作符也是短路操作符。即,当第一个数的求值结果为true时,就不会对第二个操作数求值了。

      如果有一个操作数不是布尔值,逻辑或也不一定返回布尔值;此时,它遵循下列规则:  

  • 如果第一个操作数是对象,则返回第一个操作数;

  • 如果第一个操作数的求值结果为 false,则返回第二个操作数;

  • 如果两个操作数都是对象(或非0数),则返回第一个操作数;

  • 如果两个操作数都是 null,则返回 null;

  • 如果两个操作数都是 NaN,则返回 NaN;

  • 如果两个操作数都是 undefined,则返回 undefined

练习:

注意:                

        || 这个符号在开发中 往往是优化的代码最常用的js符号

         例如:var xhr=new XMLHttpRequest()||new ActiveXObject('Micorsoft.XMLHTTP')解决兼容性问题。

3、逻辑非(!)

        可以应用于 ECMAScript 中的任何值。无论这个值是什么数据类型,这个操作符都会返回一个布尔值。逻辑非操作符首先会将它的操作数转换为一个布尔值,然后再对其求反。

        例子:

        经常用于开关思想,

        开关思想:把一个变量中保存一个布尔值 然后在业务执行时 修改这个变量的值:为取反  然后通过变量的值执行分支业务。例如:

   三、关系操作符

        运算符  ==> 底层cpu会去计算 会执行操作 得到一个结果

1、比较运算符

小于(<),(大于)>,(大于等于)>=,(小于等于)<=,他们用于两个数的比较,返回的值是一个布尔值。

当两个数存在非数值性时,会进行相应的转换,规则如下:

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

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

  • 如果一个操作数是对象,则调用这个对象的 valueOf()方法,用得到的结果按照前面的规则执行比较。如果对象没有 valueOf()方法,则调用 toString()方法,并用得到的结果根据前面的规则执行比较。

  • 如果一个操作数是布尔值,则先将其转换为数值,然后再执行比较。

  • 任何操作数与 NaN 进行关系比较,结果都是 false

2、相等运算符

        相等(==)、不相等(!=)、全相等(===)、不全等(!==)

        ==比较比较两个数的值是否相等,相等返回true;!=,不相等返回true。

        当两个操作数类型不同时,会先转换操作数(强制转换),转换规则如下:   

  • 如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值——false 转换为 0,而true 转换为 1;

  • 如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值;

  • 如果一个操作数是对象,另一个操作数不是,则调用对象的 valueOf()方法,用得到的基本类型值按照前面的规则进行比较;

        注意:

  • null 和 undefined 是相等的。

  • 要比较相等性之前,不能将 null 和 undefined 转换成其他任何值(null == 0为false)。

  • 如果有一个操作数是 NaN,则相等操作符返回 false,而不相等操作符返回 true。重要提示:即使两个操作数都是 NaN,相等操作符也返回 false;因为按照规则, NaN 不等于 NaN。NaN!=r任何

记忆:

JS操作符_第1张图片

练习:

===和!==,只在两个操作数未经转换就相等的情况下返回 true。

注意:null == undefined 会返回 true,因为它们是规定;但 null === undefined 会返回 false,因为它们是不同类型的值。

2、in运算符

主要用于检查对象中是否有某成员。

3、instanceof运算符

检查左侧的对象是否是右侧类的实例,如果是返回true;

四、条件操作符(三目运算符)

        expr1?A:B  //expr1表达式会做布尔判定 判定的结果为true 就会执行表达式A 否则执行B  

            //整个三目运算表达式的结果  是A 或者B

五、赋值操作符

赋值操作符(=),就是把右侧的值赋给左侧的变量,不能是表达式,例如: a+b=c //错误

复合赋值操作符:

  • 乘/赋值(*=); //例如a*=10 等价于a = a*10

  • 除/赋值(/=);

  • 模/赋值(%=);

  • 加/赋值(+=);

  • 减/赋值(-=);


六、逗号操作符

逗号运算符  多元运算符

使用逗号操作符可以在一条语句中执行多个操作。

可以声明多个变量。

七、表达式计算

eval()可以解释运行由JavaScript源代码组成的字符串,并产生一个值。

eval()只有一个参数。如果传入的参数不是字符串,它直接返回这个参数。如果参数是字符串,它会把字符串当成JavaScript代码进行编译,如果编译失败者抛出一个语法错误异常。如果编译成功,则开始执行这一段代码,并返回字符串中的最后一个表达式会或语句的值,如果最后一个表达式或语句没有值,则最终返回undefifined。如果字符串抛出一个异常,这个异常将把该调用传递给eval()。

你可能感兴趣的:(JS,javascript)