目录
八、三元运算符(Conditional operators)
一、概念
1.运算符
用于执行程序代码的运算(针对于一个以上的操作数进行运算)。
2.表达式
由一个或多个操作数通过运算符组成是式子。
二、运算符的分类
- 算数运算符(Airthmetic operators)
- 赋值运算符(Assignment operators)
- 比较运算符(Comparison operators)
- 位运算符(Bitwise operators)
- 逻辑运算符(Logical operators)
- 三元运算符(Conditional operators)
三、算数运算符(Airthmetic operators)
1.定义
算术运算符使用数值 (字面量或者变量) 作为操作数并返回一个数值。标准的算术运算符就是加减乘除 (+ - * /)。当操作数是浮点数时,这些运算符表现得跟它们在大多数编程语言中一样(特殊要注意的是,除零会产生Infinity)。
2.分类
+(加)、-(减)、*(乘)、/(除) 、%(取余,求模)
++(自增)、--(自减)、-(一元负值符)、+(一元正值符)、**(指数运算符)
console.log(10+4); //14 console.log(10-4); //6 console.log(10*4); //40 console.log(10/4); //2.5 商 console.log(10%4); //2 取余 console.log(x++); //自加 console.log(x--); //自减 console.log(-x); //一元负值符 console.log(+x); //一元正值符 console.log(2**3); //8 指数运算符
隐式转换:在运算符过程中会自动进行数据类型的转换,一般情况下都会转换成number进行运算 console.log(10 - "2"); //8 "2"--2 console.log("2" * 3); //6 console.log("10" / true); //10 console.log("10" - null); // 10
四、赋值运算符(Assignment operators)
1.定义
一个赋值运算符将它右边操作数的值赋给它左边的操作数。最简单的赋值运算符是等于(=
),它将右边的操作数值赋给左边的操作数。那么 x = y
就是将 y 的值赋给 x。
2.分类
名字 | 简写的操作符 | 含义 |
---|---|---|
赋值(Assignment) | x = y | x = y |
加法赋值(Addition assignment) | x += y | x = x + y |
减法赋值(Subtraction assignment) | x -= y | x = x - y |
乘法赋值(Multiplication assignment) | x *= y | x = x * y |
除法赋值(Division assignment) | x /= y | x = x / y |
求余赋值(Remainder assignment) | x %= y | x = x % y |
求幂赋值(Exponentiation assignment) | x **= y | x = x ** y |
左移值赋值(Left shift assignment) | x <<= y | x = x << y |
右移值赋值(Right shift assignment) | x >>= y | x = x >> y |
无符号右移位赋值(Unsigned right shift assignment) | x >>>= y | x = x >>> y |
按位与赋值(Bitwise AND assignment) | x &= y | x = x & y |
按位异或赋值(Bitwise XOR assignment) | x ^= y | x = x ^ y |
按位或赋值(Bitwise OR assignment) | x |= y | x = x | y |
3.解构赋值
对于更复杂的赋值,语法是一个能从数组或对象对应的数组结构或对象字面量里提取数据的 Javascript 表达式。
var foo = ["one", "two", "three"]; // 不使用解构 var one = foo[0]; var two = foo[1]; var three = foo[2]; // 使用解构 var [one, two, three] = foo;
五、比较运算符(Comparison operators)
1.定义
比较运算符比较它的操作数并返回一个基于表达式是否为真的逻辑值。操作数可以是数字,字符串,逻辑,对象值。字符串比较是基于标准的字典顺序,使用 Unicode 值。在多数情况下,如果两个操作数不是相同的类型,JavaScript 会尝试转换它们为恰当的类型来比较。这种行为通常发生在数字作为操作数的比较。类型转换的例外是使用 ===
和 !==
操作符,它们会执行严格的相等和不相等比较。这些运算符不会在检查相等之前转换操作数的类型。
2.分类
运算符 | 描述 | 返回 true 的示例 |
---|---|---|
等于(== ) | 如果两边操作数相等时返回 true。 | 3 == var1 "3" == var1 3 == '3' |
不等于 (!= ) | 如果两边操作数不相等时返回 true | var1 != 4 var2 != "3" |
全等(=== ) | 两边操作数相等且类型相同时返回 true。 | 3 === var1 |
不全等 (!== ) | 两边操作数不相等或类型不同时返回 true。 | var1 !== "3" 3 !== '3' |
大于(> ) | 左边的操作数大于右边的操作数返回 true | var2 > var1 "12" > 2 |
大于等于(>= ) | 左边的操作数大于或等于右边的操作数返回 true | var2 >= var1 var1 >= 3 |
小于(< ) | 左边的操作数小于右边的操作数返回 true | var1 < var2 "2" < 12 |
小于等于 (<= ) | 左边的操作数小于或等于右边的操作数返回 true | var1 <= var2 var2 <= 5 |
六、位运算符(Bitwise operators)
1.定义
位运算符将它的操作数视为 32 位元的二进制串(0 和 1 组成)而非十进制八进制或十六进制数。例如:十进制数字 9 用二进制表示为 1001,位运算符就是在这个二进制表示上执行运算,但是返回结果是标准的 JavaScript 数值。
2.JavaScript中的位运算符
运算符 | 示例 | 描述 |
---|---|---|
按位与 (AND) | a & b | 在 a,b 的位表示中,每一个对应的位都为 1 则返回 1,否则返回 0. |
按位或 (OR) | a | b | 在 a,b 的位表示中,每一个对应的位,只要有一个为 1 则返回 1,否则返回 0. |
按位异或 (XOR) | a ^ b | 在 a,b 的位表示中,每一个对应的位,两个不相同则返回 1,相同则返回 0. |
按位非 (NOT) | ~ a | 反转被操作数的位。 |
算数左移 (Left shift) | a << b | 将 a 的二进制串向左移动 b 位,右边移入 0. |
算数右移(Right shift) | a >> b | 把 a 的二进制表示向右移动 b 位,丢弃被移出的所有位。(译注:算术右移左边空出的位是根据最高位是 0 和 1 来进行填充的) |
无符号右移 (左边空出位用 0 填充) | a >>> b | 把 a 的二进制表示向右移动 b 位,丢弃被移出的所有位,并把左边空出的位都填充为 0 |
七、逻辑运算符(Logical operators)
1.定义
逻辑运算符常用于布尔(逻辑)值之间; 当操作数都是布尔值时,返回值也是布尔值。不过实际上&&
和||
返回的是一个特定的操作数的值,所以当它用于非布尔值的时候,返回值就可能是非布尔值。逻辑运算符的描述如下。
2.分类
运算符 | 范例 | 描述 |
---|---|---|
逻辑与(&& ) | expr1 && expr2 | (逻辑与) 如果 expr1 能被转换为 false,那么返回 expr1;否则,返回expr2 。因此,&& 用于布尔值时,当操作数都为 true 时返回 true;否则返回 false. |
逻辑或(|| ) | expr1 || expr2 | (逻辑或) 如果 expr1 能被转换为 true,那么返回 expr1;否则,返回expr2 。因此,|| 用于布尔值时,当任何一个操作数为 true 则返回 true;如果操作数都是 false 则返回 false。 |
逻辑非(!) | !expr | (逻辑非) 如果操作数能够转换为 true 则返回 false;否则返回 true。 |
能被转换为false
的值有null
, 0
, NaN
, 空字符串 ("") 和undefined
。
八、三元运算符(Conditional operators)
三元运算符是 JavaScript 中唯一需要三个操作数的运算符。运算的结果根据给定条件在两个值中取其一。语法为:
条件 ? 值 1 : 值 2
如果条件
为真,则结果取值 1
。否则为值 2
。你能够在任何允许使用标准运算符的地方使用条件运算符。