JS算术运算符
即操作符,可以对一个或多个值进行计算。
1,算术运算符
当对非Number类型的值进行计算时,会将这些值转换为Number再进行计算。
任何值与NaN做运算都是NaN。
1.1 +
可以对两个值进行加法运算,并将结果返回。
如果对两个字符串进行加法运算,则会进行拼串,两个字符串拼接为一个。(+表示换行)
任何的值和字符串做加法运算,都会转换为字符串,在和字符串做拼串。
可以利用这一个特点,来将一个任意的数据类型转换为String,只需要+一个“ ”,即可转换为String,这是一种隐式的类型转换,由浏览器自动完成,实际上也是调用了String函数,
1.2 -
可以对两个值进行减法运算,并将结果返回。
任何值都会自动转换为Number进行计算
(可以利用这一特点做隐式的类型转换--可以通过一个值-0 *1 /1 来将其转换为Number,原理和Number()函数一样,使用起来更加简单)
1.3 *
可以对两个值进行乘法运算,并将结果返回。
1.4 /
可以对两个值进行除法运算,并将结果返回。
1.5 %
取模运算(取余数)
2,一元运算符
只需要一个操作数
2.1 + 正号
正号不会对数字产生任何影响
可以对一个其他的任意数据类型使用 + ,来将其转换为Number类型,其原理和Number()函数更简单。
2.2 - 负号
负号可以对数字进行负号的取反
3,自增 自减
3.1 自增++
通过自增可以使变量在自身的基础上增加1。
后++(a++) 和 前加加 (++a),无论是哪一种,都会使变量的值增加1,
但是两个值不同,a++的值是a的原值,++a是a自增后的值
3.2 自减--
通过自减可以使变量在自身的基础上减少1。(同上)
4,逻辑运算符
4.1 !非
!可以对一个值进行一个非运算,即对一个布尔值进行取反操作
如果对一个非布尔值进行取反操作,会先将其转换成成布尔值,再进行取反(利用该特点将其他数据类型转换为布尔值),可以为一个任意数据类型进行两次取反,来将其转换为布尔值,其原理和Boolean()函数一样。
4.2 && 与
可以对符号两侧的值进行 与 运算并返回结果。
一假则假
JS中的与是短路的与,如果第一个为false,则不会检查第二个值
非布尔值的情况
会先将其转换为布尔值,然后在运算,并且返回原值。
如果第一个值为true,则必然返回第二个值(原值)。
如果第一个值为false,则直接返回第一个值。
4.3 || 或
可以对符号两侧的值进行 或 运算并返回结果。
一真则真
JS中的与是短路的 或。
非布尔值的情况
如果第一个值为true,则直接返回第一个值(原值)。
如果第一个值为false,则返回第二个值。
5,赋值运算符
5.1 =
可以将符号右侧的值赋值给左侧的变量。
+= -= *= /= %=
6,关系运算符
通过关系运算符可以比较两个值之间的大小关系。成立返回true,不成立返回false
大于号 >,小于号 < ,大于等于 >= 小于等于 <=
非数值的情况
对于非数值进行比较时,会将其转换为数值,然后再进行比较
任何值和NaN做任何比较都是false。
如果符号两侧的值都是字符串时,不会将其转换为数字进行比较,而会分别比较字符串中字符的Unicode编码(十六进制的)。
比较字符编码时一位一位进行比较,如果两位相等一样,则比较下一位,所以借用它来对英文进行排序。
比较中文没有意义。
如果比较的两个字符串型的数字,可能会得到不可预期的结果。
(注意:在比较两个字符串型的数字时,一定一定要转型(加一个+号)
Unicode编码
在字符串中使用转义字符输入Unicode编码,\u四位编码
在网页中使用Unicode编码,&#编码。(编码是十进制的)
7,相等运算符
7.1 相等==
相等运算符用来比较两个值是否相等,相等会返回true,否则返回false。
当使用 == 来比较两个值时,如果值的类型不同,则会自动进行类型转换,将其转换为相同的类型(大部分转换为数字)。
null没有转成0
undefined 衍生自null,所以这两个值做相等判断时,会返回true。
NaN不和任何值相等,包括它本身
(判断b的值是否是NaN,可以通过isNaN()函数来判断一个值是否是NaN,如果该值是NaN,则返回true)
7.2 不相等!=
不相等也会对变量进行自动的类型转换,如果转换后相等,它也会返回false。
7.3 全等===
用来判断两个值是否全等,它和相等类似,不同的是他不会自动进行数据类型转换,如果两个值的类型不同,直接返回false。
7.4 不全等!==
用来判断两个值是否不全等,它不等类似,不同的是他不会自动进行数据类型转换,如果两个值的类型不同,直接返回true。
8,条件(三元)运算符
语法:
条件表达式?语句一:语句二;
流程:
条件运算符在执行时,首先对条件表达式进行求值,如果该值为true,则会执行语句一,并返回执行结果。如果该值为false,则会执行语句二,并返回执行结果。
如果条件表达式的求值结果是一个非布尔值,会将其转换为布尔值然后再运算。
9,逗号运算符
,逗号,可以分割多个语句,一般可以在声明多个变量并赋值时使用
运算符优先级
优先级越高,越先计算,若相同,从左到右计算。
可以用括号改变优先级。