1. 一元运算符
所谓的一元运算符是指:只一个运算数的运算符;一元运算符包含:
| 一元运算符 | 描述 |
| ++ | 自增运算 |
| -- | 自减运算 |
| + | 正号运算 |
| - | 负号运算 |
注意事项:
a++ 先赋值,再计算(返回自增前的数)
++a 先计算,后赋值(返回自增后的数)
// 自增案例
var a = 10;
var b = ++a - 1 + a++; // 输出:11-1 + 11 = 21
document.write(b + " " + a); // 输出:12
// 自减案例
var c = 1;
var d = c-- + --c;
document.write(d); // 输出:0
2. 赋值运算符
赋值运算符分:
-
基本赋值运算符:就是一个等号=,代表将右侧的数据效给左侧的变量进行存储。
-
复合赋值运算符:【+=加等】【-=减等】【*=乘等】【/=除等】【%=取棤等】。
赋值运算符如下:
| 运算符 | 含义 | 例子 | 等同于 |
| = | 等于号 | x = y | x = y |
| += | 加等于 | x += y | x = x + y |
| -= | 减等于 | x -= y | x = x - y |
| *= | 乘等于 | x *= y | x = x * y |
| /= | 除等于 | x /= y | x = x / y |
| %= | 取模等 | x %= y | x = x % y |
如下基本案例:
var x = 3;
var y = 4;
document.write((x += y) + "<br>"); // 输出:7
var x = 3;
var y = 4;
document.write((x -= y) + "<br>"); // 输出: -1
var x = 3;
var y = 4;
document.write((x *= y) + "<br>"); // 输出: 12
var x = 3;
var y = 4;
document.write((x /= y) + "<br>"); // 输出:0.75
// 输出:3,原因如下:
// 数学原理:3 ÷ 4 = 0(商),余数为 3(因为 3 < 4,不够除)
// 当被除数(3)小于除数(4)时,余数就是被除数本身(3)
var x = 3;
var y = 4;
document.write((x %= y));
3. 算数运算符
| 运算符 | 描述 |
| + | 加法运算 |
| - | 减法运算 |
| * | 乘法运算 |
| / | 除法运算 |
| % | 取模运算(两个数字相除得出的余数) |
var a = 3;
var b = 4;
document.write(a+b + "<br>"); // 输出:7
document.write(a-b + "<br>"); // 输出:-1
document.write(a*b + "<br>"); // 输出:12
document.write(a/b + "<br>"); // 输出:0.75
document.write(a%b + "<br>"); // 输出:3
4. 比较运算符
比较运算符在逻辑语句中使用,以判定变量或值是否相等
我们给定 x = 5,下表中解释了比较运算符:
| 运算符 | 含义 | 例子 | 返回值 |
| == | 等于 | x ==8 x == 5 x == "5" | false true true |
| === | 等值等型(即值相等并且类型相等) | x === 5 x === "5" | true false |
| != | 不相等 | x != 8 | true |
| !== | 不等值或不等型 ( 即值不相等或类型不相等 ) | x !==5 x !=="5" x !== 8 | false true true |
| > | 大于 | x > 8 | false |
| < | 小于 | x < 8 | true |
| >= | 大于等于 | x >= 8 | false |
| <= | 小于等于 | x <=8 | true |
比较不同的类型:
比较不同类型的数据也许会出现不可预料的结果。
如果将字符串与数字进行比较,那么在做比较时 JavaScript 会把字符串转换为数值,空字符串将被转换为 0,非数值字符串将被转换为始终为 false 的 NaN。
| 案例 | 值 |
| 2 < 12 | true |
| 2 < "12" | true |
| 2 < "Bill" | false |
| 2 > "Bill" | false |
| 2 == "Bill" | false |
| "2" < "12" | false |
| "2" > "12" | true |
| "2" == "12" | false |
注:当比较两个字符串时,”2”是大于”12”的,因为字母排序1小于2;
5. 逻辑运算符
5.1 介绍
逻辑运算符用于判定变量或值之间的逻辑。其分成三类:
| 运算符 | 含义 | 例子 (假如x=5, y=3) | 返回值 |
| && | 与 | (x < 10 && y > 1) | true |
| || | 或 | ( x == 5 || y ==5 ) | true |
| ! | 非(否) | ! ( x == y ) | true |
5.2 与运算符
与运算符的规则:
-
即便只有一个数字,均表示合法的表达式。如 :
var a = 1 && 2 -
被认定为 false 的值 :undefined、
null、NaN、""、0、false,除此之外为 true 。 -
如果只有两个表达式:先看第一个表达式转换成布尔值的结果是否为真:
- 如为真,则直接返回第二个表达式转换成布尔值的结果
- 如为假,则返回 false ( 但这些本身认定为 false 的值,则是返回其本身) -
如有多个表达式,也是从同样的规则(第一个为真,看第二个;第二个为真,看第三个;如果某个表达式为假那不再往后看);
- 总结:所有表达式为真时,才为真。
基本案例如下:
// 案例:
var a = 1 && 2 // 输出:2
var b = 1 && 2 +2 // 输出:4
var c = 2>5 && 2 // 输出:false
var d = 0 && 2 // 输出:0
var e = undefined && 2 // 输出:underfined
var f = 1 && 0 // 输出:0
document.write(a);
document.write(b);
document.write(c);
document.write(d);
document.write(e);
document.write(f);
特殊用法 - 短路语句:
任何表达式(包含与运算符的表达式)都可以是:数字、数字运算、函数、输出语句等等..
与运算符可以当作 "短路语句" 来使用。所谓的短路语句就是"如果.. 那么"。即我只关心它能不能执行第二个表达式,如果它能执行第二就执行,如果它不能执行第二个就不执行。比如以下案例:如果 2 > 1 就输出语句,否则不执行:
2>1 && document.write('Hello World!');
以上短路语句的用法就是:我不关心返回值,我只关心执行顺序。
5.3 或运算符
与运算符的规则:
-
即便只有一个数字,均表示合法的表达式。如 :
var a = 1 || 2 -
被认定为 false 的值 :
undefined、null、NaN、""、0、false,除此之外为 true 。 -
如果只有两个表达式:先看第一个表达式转换成布尔值的结果是否为真:
- 如为真,则直接返回该表达式转换成布尔值的结果
- 如为假,则直接返回第二个表达式转换成布尔值的结果 -
如有多个表达式,也是从同样的规则(第一个为假,看第二个;第二个为假,看第三个;如果某个表达式为真那不再往后看);
-
总结:有一个表达式为真时,则为真。
var num1 = 2 || 3;
document.write(num1); // 输出:2
var num2 = 0 || 3;
document.write(num2) // 输出: 3
var num3 = 0 || false; // 输出:false
document.write(num3);
var num4 = 0 || undefined; // 输出:underfined
document.write(num4);
var num5 = 0 || false || 1; // 输出:1
document.write(num5);
5.4 非运算符
非运算符的规则:
-
基本概念:把表达式转换成布尔值,再取反。
-
可以连续写两个非运算符,含义就是:把表达式转换成布尔值,然后取反,再取反。
var a = !123; // 123转成布尔为:true, 再取反就为:false. 输出:false
document.write(a);
var b = !""; // ""空串被认为:false, 再取反就为: true. 输出:true
document.write(b);
var c = !!"";
document.write(c); // ""空串被认为:false, 再取反就为: true,再返回为:false 输出:false
其它数据类型转Boolean数据类型:
我们说:“如果给定的数据类型不是一个Boolean数据类型(如: !num),那么会自动地将运算数进行数据类型转换”。下面我们演示一下:
document.write("num的数据类型为: " +typeof(num) + "<br>"); // 输出:number
document.write(!num + "<br>"); // 输出:true
如上解释,
-
我们规定变量num的数据类型为Boolean(即” ! ”只会产生Boolean值),但给定的数据类型并不是一个Boolean数据类型(即num=0),那么js引擎会自动地将运算数进行数据类型转换,转成boolean数据类型;
-
那么根据数据类型转换的规则:
-
如果是number数据类型转成Boolean数据类型:则0或NaN为false,其它为true;
-
如果是String数据类型转成Boolean数据类型:则除了空字符串,其它都是true;
-
如果是null & underfined数据类型转成Boolean数据类型:则都为false;
-
如果是对象数据类型转成Boolean数据类型:则所有对象都为true;
有关其它数据类型转Boolean数据类型的案例,请转到【数据类型转换】一节中查阅。
6. 逗号运算符
逗号运算符的优先级非常低,仅高于赋值运算符,所以通常需要用括号包裹以确保正确的运算顺序。
JavaScript中的逗号运算符(,)是一个特殊的运算符,它有以下特点:
-
语法形式:
表达式1,表达式2,表达式n... -
运算规则:从左到右依次计算每个表达式,返回最后一个表达式的值
-
常见用途:
- 在for循环中同时更新多个变量
- 在一条语句中执行多个操作
- 简化某些需要返回多个值的场景
// 逗号运算符案例:
var num = (1,2);
console.log(num);
/*
解释:
1.逗号运算符,逗号运算符的运算结果是逗号运算符右边的值。
2.逗号运算符,逗号运算符的运算顺序是从左到右。
3.逗号运算符,要运算得用括号包起来。
*/
// 运算符案例:
var f = (
function f(){
return "1";
},
function g(){
return 2;
}
)();
document.write(typeof f);
/* 解题:
- 本题考察逗号运算符
- 逗号运算符: 运算规则:从左到右依次计算每个表达式,返回最后一个表达式的值
- typeof返回六种类型:Number,String,Boolean,Object,Undefined,Function
- 本题是一个立即执行函数“(funf,fung)(执行符号)”, 因此程序执行后会直接运行该函数
*/
7. 三目运算符
三目运算符可以说是 if 语句的简化版。它比 if 语句更好玩的一点是:它会自动返回 "是" 与 "否" 表达式的结果,而 if 语句则需要自己手动 return。以下为三目运算符的语法:
条件判断 ? 是 :否
// 案例:
var num = 1 > 0 ? ("10" > 9 ? 1 : 0) : 2;
console.log(num);
/* 解题:
- 输出:0
- 这题嵌套了两个三目运算符
- 有时候表达式如果太长,为避免错误或逻辑错乱,可以使用括号把表达式括起来
*/
1063

被折叠的 条评论
为什么被折叠?



