js--运算符
运算元:运算符应用的对象 。比如5*2就有两个运算元,左运算元5,右运算元2。
一元运算符:一个运算符对应的只有一个运算元。比如
let x = 1
x = -x
console.log(x) // -1
二元运算符: 一个运算符拥有两个运算元。 例如:
let x = 1,y= 2;
console.log(y+x) // 3
算术运算符
-
加法
+, -
减法
-, -
乘法
*, -
除法
/, -
取余
%, -
求幂
**( x**y y除了可以为整数(1或-1),也可以为非整数(½))console.log(1+2) //3 console.log(2-3) //-1 console.log(2*3) //6 console.log(5/2) //2.5 console.log(5%3) //2 console.log(5**2) //25 console.log(25**(1/2)) //5 console.log(25**(-1)) //0.04
+可以说是唯一一个支持字符串的运算符。其他算术运算符只对数字起作用,并且总是将其非数值运算元转换为数字。
例如:
'6'/'2' //3
6 - '2' //4
如果加号 +被应用于字符串,它将连接各个字符串。
只要任意一个运算元是字符串,那么另一个运算元也将被转化为字符串。例如:
1+'1' // '11'
2+2+'1' //'41'
运算符加号应用于单个值,如果值不为数字,会将值转换为数字(效果等同于Number(value))
+'3' // 3
+ 3 // 3
+'ss' //NaN
运算符优先级
如果一个表达式拥有超过一个运算符,执行的顺序则由运算符优先级决定。(一元运算符优先级高于二元运算符)
可以参考优先级表 。
赋值运算符
赋值运算符的优先级非常低。所以 x = 2*3+1 所有的计算先执行,赋值 =才执行。
=是一个运算符,在js中,大多数的运算符都会返回一个值。比如+,-,对=也是如此。
语句 x= value 将value写入x中返回x。
例如:
let a = 1
let b = 2
let x = 1+(a=a+b)
a // 3
x // 4
var a1 = b1 = c1 = 5
a1 //5
b1 //5
c1 //5
原地修改
我们常常需要计算获取一个值,并将结果存储在同一个变量中。 例如:
let c = 5;
c = c+5 //10
可以用 +=,-=等形式来缩写表示 。这种运算符与普通赋值运算符优先级相同。例如:
let a= 5
a*=2
a // 10
自增/自减
对一个数加一,减一是比较常见的运算操作。
因此,有一些专门对此的运算符。
自增:++
例如:
let count = 1
count++
count // 2
自减:--
例如:
let count = 1
count --
count // 0
运算符++或--既可以放到变量前,也可以放到变量后。
当运算符放到变量前,被称为"前置形式"。++count
当运算符放到变量后,被称为"后置形式"。count--
前置和后置的区别:
两者都做一件事:让变量加一或减一。
前置:返回自增或自减的值。例如:
let count = 5
let a = ++count
a // 6
count // 6
后置:返回自增或自减之前的值。例如:
let count = 5
let a = count++
a // 5
count // 6
如果前置或后置的值不被使用,两者没有什么区别。
let count = 5
count ++
count // 6
let a = 5
++a
a // 6
ps:自增/自减 只能用于变量,用于数值会报错。例如:
5++ //Uncaught SyntaxError: Invalid left-hand side expression in postfix operation
逗号运算符
逗号运算符的优先级比赋值运算符还要低。
逗号运算符能让我们处理多个语句,使用 , 将它们分开。每个语句都运行了,但是只有最后的语句的结果会被返回。
let a = 1;
let b = 1
let c
let d = (c= a+b,3+4)
d // 7
c // 2