<五>JavaScript的运算符

本文详细介绍了JavaScript中的各种运算符,包括算数运算、一元运算、逻辑运算、比较运算、赋值运算和条件运算,重点讲解了类型转换规则、运算符优先级以及结合性,有助于理解和使用这些运算符进行编程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

运算符也叫操作符,是对一个或者多个值进行运算,比如typeof运算符,可以获得一个值的类型,会将值得类型以字符串的性质返回。

算数运算符

规则:

任何值和NaN运算都得到NaN

对非Number运算,都会先自动转换为Number,再运算

+加法运算符

对俩个值进行加法运算,返回结果,不影响原值

如果加号俩变都是字符串,则进行拼串操作,不会在进行自动转换

任何值和字符串做加法,都会先转换为字符串,然后再做拼串操作,可以利用这一特点为任意的数据类型做类型转化,只需要给这个数据类型+"",加空字符串就会由浏览器自动完成转换。

-减法操作符、*乘法运算符和/除法运算符

对俩个值做减法运算、乘法运算和/除法运算时,都会自动转换为Number类型,我们可以利用这个特点做隐士类型转换。

一元运算符

即只需要一个操作数

+正号和-负号

+ 正号 对数字不会产生任何影响

- 负号 对数字进行取反

对于非Number类型,会先强制转换为Number,再取反,可以利用这一特点,对其他数据类型做隐性转换。

例子:

result = 1 + "2" + 3 ---> "123"

result = 1 + +"2" + 3 --->6

自增(++)和自减(--)

使变量在自身的基础上增加一或者减少一,对一个变量进行自增或者自减,影响的是原变量。

a++ :a的值会自动加1,但是 a++作为表达式是返回原来的a的值,是不变的。

自增的分类

后++(a++)

a的原值都会立即+1,但是a++作为表达式是返回原来的a的值,是不变的。

前++(++a)

a的原值都会立即+1,但是++a作为表达式是返回原变量的新值,即增加过1的值。

自减同上

逻辑运算符

!非运算符

可以对一个值进行非运算,即对一个布尔值进行取反操作,true变为false,或者false变为true。

如果对一个值进行俩次取反,不会变化!!

如果对非布尔值进行非运算,会先把其转换为布尔值,然后再取反,可以利用这特点,将其他类型转换为布尔类型,即进行俩次取反。

&&与运算符

对符号俩侧进行与运算,并且返回结果

规则:俩个值中值要有一个值是false即为false,只有俩个值均为true的时候,才返回true。

在js中,&&操作属于短路与,即只要第一个值是false,就直接返回false,不会再检查第二个值。

true&&alert("hello"); 第一个值为true,会检查第二个值,会弹出!

false&&alert("hello"); 第一个值为false,不会检查第二个值,不会弹出!

||或操作符

与&&操作正好相反,俩个值中只要有一个为true,就返回true,同时也是短路操作,第一个值为true,就不会检查第二个值了。

非布尔值的与和非运算,会将其转换为布尔值再运算,并且返回原值

非布尔值的与和非运算:

与运算:如果第一个值是true,则直接返回第二个值,如果第一个值是false,则返回第一个值;

或运算:如果第一个值是true,则直接返回第一个值,如果第一个值是false,则返回第二个值;

赋值运算符

= 将符号右侧的值赋值给符号左侧的变量

+=,-=,*=,/=, %=

关系运算符

比较俩个值的大小,如果关系成立返回true,不成立返回false

>, >=, <, <=

规则:

对于非数值进行比较,会将非数字转换为数字,在进行比较

任何值与NaN做比较,都是false

如果符号俩侧都是字符串时,不会将其转换为数字,而是比较俩个字符串的的字符编码,如果字符串不是一位的,则一位一位的进行比较,前面位数比较出大小则不看后面的

"abc" < "b" -- >true

"bbc" < "b" -- >false

可利用这一特性,对英文进行排序。

注意比较俩个字符串类型的数字时,一定要把字符串转换成数字进行比较,不然会出现不可控的问题。尤其是从前端输入框获取值进行比较时,切记切记。

相等运算符和不相等运算符

== 比较俩个值是否相等,相等则返回true,否则返回false。

如果比较的值不同时,会进行类型转换再比较,但是转换成什么类型是不定的。

a == 4 --->false

true == "1" --->true

"1" == 1 --->true

null == 0 --->false

underfined == null --->true

NaN == NaN--->false

undefined 衍生于null ,所以比较的时候他们相等,但是不全等,NaN不和任何值相等,所以不能通过一个值是否等于NaN来判断,是否是NaN,但是可以用isNaN函数来进行判断。

!= 不相等运算符,规则类似相等运算符。

全等===,和相等类似,但是不会做类型转换,所以不仅要值相等,类型也需要一致。

不全等 !==,和不相等类似,但是不会做类型转换。

条件运算符

也叫三元运算符

语法:条件表达式?语句1:语句2;

执行流程:首先对表达值进行求值,如果返回true,则执行语句1,并返回结果,如果为false,则执行语句2,并返回结果。

获取a、b中的最大值:

var max = a>b?a:b;

运算符优先级和结合性

结合性:向左结合也就是从左向右结合,向右结合也就是从右向左结合。

优先级的大概顺序为:

1:最高:[],()

2:单目运算符:++ -- - ~ ! delete new typeof void

3:算数运算符:*、/、% ,+、-

4:双目位操作运算符:<<、>>、>>>

5:比较运算符:<、<=、>、>=、instanceof ==、!=、===、!==

6:单目位操作运算符:& 、^ 、|

7:逻辑运算符:&&、||

8:三目运算符(条件运算符)?:

9:赋值类运算符:=、+=、-=、*=、/=、%=、&=、|=、^=、<、<=、>、>=、>>=

10:多个运算符:,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值