运算符和表达式的概念
-
运算符:连接一个或以上的操作数的中间的符号就叫运算符
10 + 20 : 10,20操作数 运算符:+ a = 10; 运算符:= a++; 运算符: ++
-
表达式:由操作数和运算符组成的式子就叫表达式
10 + 10 : 表达式 a = 10 : 表达式 a++ :表达式
-
运算符的分类
运算符的分类:算术运算符,赋值运算符,逻辑运算符,比较运算符,三目运算符 表达式的分类:算术表达式,赋值表达式,逻辑表达式,比较表达式,三目表达式
2.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
-
特殊
//1. % 的作用 n的倍数 var n = 9; console.log(n % 2 == 0); //偶数 //2.精度缺失:运算过程中,小数运算可能会出现偏差 console.log(0.1 + 0.2); //0.30000000000000004 console.log(0.1 * 0.7); //0.06999999999999999 console.log((0.1 * 0.7).toFixed(2)); //0.07 //3.隐式转换:在运算过程中,数据自动进行的数据类型转换 //隐式转换的规律:都会转换为number进行运算,+号遇到字符串就会变成连接符 console.log(100 * false); //0 false--->0 console.log("100" - 10); //90 number "100"---> 100 console.log(10+null); //10 null --->0 console.log("10" + 10); //"1010" 10 --> "10"
-
++自增
-
基础操作
//++ : 自加1,自增 var a = 10; a++; //a = 10 a = 11 ++a; //a = 11 a =12 console.log(a); //12 //运算,打印过程中,++在前,先自加,后运算(打印), ++在后,先运算(打印),后自加 var n = 10; var m = ++n; // m = n ; n = 11 ++在前,先自加,后运算(打印) console.log(n,m); //11 11 var x = 10; var y = x++; //++在后,先运算(打印),后自加 y = 10 x = 11 console.log(x,y); //11 10
-
练习
//练习1: var s = 10; var t = 10; console.log(s++,++t); //10,11 s = 11 t = 11 console.log(s,t);//11 11 //练习2: var a = 10; var b = ++a + a++ + a++; //b = 11 + 11 + 12 = 34 a = 13 var c = a++ + ++b + b++; //c = 13 + 35 + 35 = 83 a = 14 ,b = 36 console.log(a,b,c); //a = 14 b = 36 c = 83 //练习3: var x = 10; var y = --x + x-- + --x //y = 9 + 9 + 7 = 25 x = 7 var z = y-- + --y + x--; //z = 25 + 23 + 7 = 55 x = 6,y = 23 console.log(x,y,z); //6 23 55
-
2.3 赋值运算符
-
赋值运算符: = += -= *= /= %=
//赋值运算符: = += -= *= /= %= var a = 10 + 10; //将等号右边的值赋值给左边的变量 //+= a += 2; //累加 等价于 a = a + 2; console.log(a); //22 a -= 10; //a = a - 10 console.log(a); //12
2.4 比较运算符
-
比较运算符: > < <= >= == != \=\==(全等,恒等) !==
//比较运算符: > < <= >= == != \=\==(全等,恒等) !== console.log(30 > 20); //true, 比较运算符的结果:true false //1.两个字符串比较,一位一位比较,而且比较的是字符编码 "0" -- 48 , "A"--65 "a"--97 console.log("10000" < "2"); //true console.log("a" > "A"); //97 > 65 true //2. == ===的区别?(笔试题) console.log(10 == "10"); //true : 比较运算符再进行运算的时候,也会进行隐式转换,尽量转换为number console.log(10 === "10"); //false 不会进行隐式转换,必须一模一样才相等 //3. null在判断相等的时候,不会进行隐式转换,null和自己和undefined相等,其他都不相等 console.log(null >= 0); //true console.log(null <= 0); //true console.log(null == 0); //false console.log(null == null); //true console.log(null == undefined); //true
2.5 逻辑运算符
-
逻辑运算符:&& || !
-
基础用法
//逻辑运算符:&& || ! var s = 55; //代码中运算,是两两运算的,数学中的习惯可能无法得到正确结果 console.log(60 > s > 40); //false //两个两个写,使用&& || 进行连接 //1. && 连接两个或两个以上的条件,条件都为真结果才为真 console.log(60 > s && s > 40); //true //2. || 连接两个或两个以上的条件,只要有一个条件为真结果就为真 //考试成绩< 10 >100分 打一顿 console.log(s<10 || s>100); //false //3. 取反 (结果只会是true,false console.log(!1); //false console.log(!null); //true
-
//4.1 与(&&)短路 //&&:两真为真,如果第一个条件为假, 第二个条件不执行 var a1 = 1; var b1 = 1; var c1 = --a1 && --b1; //计算右边的结果,执行到那,将那部分的值赋值给前面的变量 //0 c1 = a1 = 0 console.log(a1,b1,c1); //0 1 0 //&& :两真为真,如果第一个条件为真, 再执行第二个条件 var a2 = 10; var b2 = 2; var c2 = --a2 && --b2; //9 1 console.log(a2,b2,c2); //9 1 1 //4.2 或(||)短路 //|| : 一真为真:如果第一个条件为假,再执行第二个条件 var x1 = 1; var y1 = 10; var z1 = --x1 || --y1; //0 9 console.log(x1,y1,z1); //0,9,9 //||:一真为真:如果第一个条件为真,第二个条件不执行 var x2 = 10; var y2 = 10; var z2 = --x2 || --y2; // 9 10 console.log(x2,y2,z2); //9,10,9
2.6 三目运算符
-
作用:用于判断(是一个低配版的条件判断)
-
语法:条件 ? 条件成立执行的代码(不能加分号,只能写一行语句) : 条件不成立执行的代码
//语法:条件 ? 条件成立执行的代码 : 条件不成立执行的代码 //如果:有钱 > 10000 ,有钱:退休 没钱:搬砖 var money = 160; money > 10000 ? console.log("退休,环游世界"):console.log("搬砖赚钱"); var age = 10 > 20 ? 45 : 18; console.log(age); //18