运算符
- 运算符也叫操作符
- 通过运算符可以对一个活多个值进行运算,并获取运算结果
- 比如Ltypeof就是运算符,可以获得一个值的类型。他会将该值的类型以字符串的形式返回
算数运算符
( 当对非Number的类型进行运算时,会将这些值转换为Number进行运算,
任何值和NaN做运算都是NaN )
-
+:加法
- 可以对两个值进行假发运算,并将结果返回。
- 两个字符串相加,相当于一个拼串操作
- 任何值和字符串相加,都会转换为字符串,然后再拼串
- 我们可以利用这一特点,来将一个任意的数据类型转换为String,我们只需为任意的数据类型+一个" "即可将其转换为String,这是一种隐式的类型转换
-:减法
*:乘法
-
/:除法
- 任何值做 - * / 运算时,都会自动转换为Number,我们可以利用这一点做隐式的类型转换,可以通过为一个值-0 *1 /1 将其转换为Number
%:取余
一元运算符
一元运算符只需要一个操作数
-
+正号
- 正号不会对数字进行影响
-
-负号
- 负号可以对数字进行取反
-
对于非Number值,会先转换为Number值再进行运算,可以对一个其他的数据类型使用+,来将其转换为number,也是一种隐式转换
//结果为6,将字符串2,转换成了数字2 var a = 1 + +"2" + 3;
自增
通过自增可以使变量再自身的基础上增加1
-
对一个变量自增以后,原变量值会立即自增1
- 自增分成两种,后++(a++)和前++(++a)
- 不论使a++还是++a,都会立即是原变量的值自增1
- a++ 是先运算再自增
- ++a是先自增再运算
a++; ++a;
- 自增分成两种,后++(a++)和前++(++a)
自减
通过自减可以使变量再自身的基础上减少1
-
对一个变量自减以后,原变量值会立即减1
- 自减分成两种,后--(a--)和前--(--a)
- 不论使a--还是--a,都会立即是原变量的值自减1
- a++ 是先运算再自减
- ++a是先自减再运算
a++; ++a;
- 自减分成两种,后--(a--)和前--(--a)
逻辑运算符
- !
- 非运算可以对一个布尔值进行取反,true变false,false变true
- 当对非布尔值使用!时,会先将其转换为布尔值再取反
- 我们可以利用!来将其他的数据类型转换为布尔值
- &&
- &&可以对符号两侧的值进行运算
- 只有两端的值都为true时,才会返回true,只要有一个false就会返回false
- 与是一个短路的与,如果第一个值是false,则不再检查第二个值
- 对于非布尔值,他会将其转换为布尔值然后再做运算,并返回原值
- 规则:
- 如果第一个值为false,则返回第一个值
- 如果第一个值为true,则返回第二个值
- ||
- ||可以对符号两侧的值进行或运算
- 只有两端都是false时,才会返回false,只要有一个true就会返回true
- 或是一个短路的或,如果第一个值是true,则不再检查第二个值
- 对于非布尔值,会将其转换为布尔值然后再做运算并返回原值
- 规则:
- 如果第一个值为true,则返回第一个值
- 如果第一个值为false,则返回第二个值
赋值运算符
- =
- 可以将符号右侧的值赋值给左侧变量
- +=
- a += 5 相当于 a = a+5
- -=
- a -= 5 相当于 a = a-5
- *=
- a = 5 相当于 a = a5
- /=
- a /= 5 相当于 a = a/5
- %=
- a %= 5 相当于 a = a%5
关系运算符
- 关系运算符用来比较两个值之间的大小关系的
- 关系运算符的规则和数学中一致,用来比较两个值之间的关系
- 如果关系成立则返回true,关系不成立则返回false
- 如果比较的两个值是非数值,会将其转换为Number然后再比较
- 如果比较两个值都是字符串,此时会比较字符串的Unicode编码,而不会转换为Number
相等运算符
- ==
- 相等,判断左右两个值是否相等,如果相等返回true,不等返回false
- 相等会自动对两个值进行类型转换,如果对不同的类型进行比较,会将其转换为相同类型然后再比较,转换后相等他也会返回true
- !=
- 不等,判断左右两个值是否不等,如果不等则返回true,如果相等则返回false
- 不等也会做自动的类型转换
- ===
- 全等,判断左右两个值是否全等,他和相等类型,只不过他不会进行自动的类型转换,如果两个值的类型不同,则直接返回false
- !==
- 不全等,和不等类似,但是他不会进行自动的类型转换,如结果两个值的类型不同,他会直接返回true
- 特殊的值
- null和undefined
- 由于undefined衍生自null,所以null == undefined 会返回true,但是null === undefined 会返回false
- NaN
- NaN不与任何值相等,包括它自身 NaN == NaN //false
- 判断一个值是否为NaN
- 使用isNaN()函数
- null和undefined
三元运算符
- ?
- 语法:条件表达式?语句1:语句2;
- 执行流程:
- 先对表达式求值判断
- 如果判断结果为true,则执行语句1,并返回执行结果
- 如果判断结果为false,则执行语句2,并返回执行结果
- 先对表达式求值判断
优先级
- 和数学中一样,JS中的运算符也是具有优先级的,比如先乘除后加减,先与后或
- 优先级不需要记忆,如果不确定,使用()改变优先级