博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第四章 javaScript运算符
阅读量:5112 次
发布时间:2019-06-13

本文共 1733 字,大约阅读时间需要 5 分钟。

 目录:

一、

二、

三、

四、

五、

 

一、自增、自减运算符:

++/--在前,则先运算再后续工作。在后则先后续工作再运算。比如:

第三章 运算符

javaScript运算符

一些特性:当操作对象不是有效数字时,javaScript会自动转换操作对象的类型。

  • 如果是字符串,并且是由有效的数字字符组成的,那么转换为数值,如果不是有效的数字字符,则转换为NaN,空字符串转换为0.
  • false转换为0,true转换为1。
  • 操作对象是Object类型时,调用valueOf()方法,如果返回NaN继续调用toString()方法,然后再按照上边的规则继续转换。

二、布尔操作符(!、&&、||):

!:逻辑非操作符:它会首先将操作数转换为布尔值,然后取反,遵循以下规则:

  • 操作数是对象:返回false。
  • 操作数是空字符串,返回true。
  • 操作数是非空字符串,返回false。
  • 操作数是数值0,返回true。
  • 操作数是任意非0数值(包括Infinity),返回false。
  • 操作数是null,NaN,undefined,返回true。

!!:两次逻辑非操作相当于执行Boolean()函数。

 

&&:逻辑与操作属于短路操作,即如果第一个操作数能够决定结果,那么就不会再对第二个操作数求值。如果第一个操作数是false,则无论第二个操作数是什么值,结果都不再可能是true了。

逻辑与操作可以用于任何类型的操作数,而不仅仅是布尔值,它遵循以下规则:

  • 如果第一个操作数是对象,则返回第二个操作数。
  • 如果第二个操作数是对象,则只有第一个操作数的求职结果为true的情况下才会返回该对象。
  • 如果两个操作数都是对象,则返回第二个操作数。
  • 如果有一个操作数是null,则返回null(除false操作数外)。
  • 如果有一个操作数是NaN,则返回NaN(除false操作数外)。
  • 如果有一个操作数是undefined,则返回undefined(除false操作数外)。

 

||:逻辑或与逻辑与差不多,也是短路操作符,如果第一个操作结果是true,就不会对第二个操作数进行计算,并且遵循以下结果:

  • 如果第一个操作数是对象,则返回第一个操作数。
  • 如果第一个操作数的求值结果为false,则返回第二个操作数。
  • 如果两个操作数都是对象,则返回第一个操作数。
  • 如果两个操作数都是null、NaN、undefined,则返回null、NaN、undefined。

由于||是短路操作符,所以可以利用这一特性为变量赋值提供后备操作。比如:

var my = var1 || var2,这样,var1优先赋值给my,如果var1没有有效值,则var2会赋值给my。

 三、乘性操作符(乘法、除法、取模):

如果某个操作数不是数值型,javaScript会在后台调用Number()函数进行转换,然后进行计算。true转为1,false转为0,空字符串转为0。

 四、加法:

  • 如果操作数有一个是字符串,则如下规则:
  • 如果两个都是字符串,则把两个字符串连接起来。
  • 如果有一个是字符串,则将另一个操作数转换为字符串,然后再连接起来。
  • 如果有一个是对象、数值或者布尔值,则调用他们的toString()方法,然后按照上边的规则执行。undefined和null只只会取得本身的字符,即“undefined”、"null"。

也就是如果字符串类型要进行数值类型的相加,必须要转换为数值类型后才可以!

五、关系操作符:

关系操作符:

  • 在进行字符串比较时,比较的是两个字符串中对应位置的每个字符的字符编码值,也就是在ascii编码里的顺序值,而不是按字母表的顺序返回比较。
  • undefined和null是相等的。
  • 如果两个操作数都是对象,如果都指向同一个对象则返回true,否则返回false。
  • NaN和NaN不相等。
  • 如果一个操作数是数值另一个是字符串,则把字符串转换为数值进行比较。
  • 如果操作数是对象,则调用valueOf()方法,如果没有则调用toString()方法,再按照上边的顺序进行计算。

 

 

转载于:https://www.cnblogs.com/jingubang/p/4624013.html

你可能感兴趣的文章
51nod 1428 活动安排问题 (贪心+优先队列)
查看>>
中国烧鹅系列:利用烧鹅自动执行SD卡上的自定义程序(含视频)
查看>>
Solaris11修改主机名
查看>>
latex for wordpress(一)
查看>>
如何在maven工程中加载oracle驱动
查看>>
Flask 系列之 SQLAlchemy
查看>>
aboutMe
查看>>
【Debug】IAR在线调试时报错,Warning: Stack pointer is setup to incorrect alignmentStack,芯片使用STM32F103ZET6...
查看>>
一句话说清分布式锁,进程锁,线程锁
查看>>
python常用函数
查看>>
FastDFS使用
查看>>
服务器解析请求的基本原理
查看>>
[HDU3683 Gomoku]
查看>>
【工具相关】iOS-Reveal的使用
查看>>
数据库3
查看>>
存储分类
查看>>
下一代操作系统与软件
查看>>
【iOS越狱开发】如何将应用打包成.ipa文件
查看>>
[NOIP2013提高组] CODEVS 3287 火车运输(MST+LCA)
查看>>
Yii2 Lesson - 03 Forms in Yii
查看>>