运算符
-
概念
-
运算符:用于执行程序代码的运算,针对于一个以上的操作数进行运算
1 + 1 : 1---操作数 +:运算符
-
表达式:由一个或多个操作数通过运算符组成是式子
1 + 1,a = 10, a++
-
运算符:算术运算符、赋值运算符、逻辑运算符、比较运算符,三目运算符
-
算术运算符
种类:+ - * / %(取余,求模),++(自增,自加), --
-
基本操作
//1.算术运算符 + - * / %(取余,求模),++(自增,自加), -- 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 取余
-
取余
//2.取余 console.log(10 % 2 == 0); //偶数 判断倍数 var num = 123; console.log(num%10); // 取数值中的某一位
-
精度缺失,不要用小数做判断
//3.精度缺失,不要用小数做判断 console.log(0.1+0.2 == 0.3); //false 0.30000000000000004 console.log(0.07*100); //7.000000000000001
-
++(这个有点绕 多练习就好啦)
//++在前,先自加后运算(运算,赋值,打印),++在后,先运算后自加 var x = 10; var y = x++; //y=x=10, x++ = 11 console.log(x,y); //x=11,y=10 var n = 10; var m = ++n; //++n = 11 m=n=11 console.log(n,m); //n=11,m=11 var a = 10; var b = ++a + a++ + a++; //b = 11 + 11 + 12 =34 a=13 var c = b++ + ++b + ++a; //c = 34 + 36 + 14 = 84 a=14,b=36 console.log(a,b,c); //14 36 84
-
隐式转换
在运算符过程中会自动进行数据类型的转换,一般情况下都会转换成number进行运算,+号遇到字符串就会变成拼接符
//5.隐式转换:在运算符过程中会自动进行数据类型的转换,一般情况下都会转换成number进行运算 console.log(10 - "2"); //8 "2"--2 console.log("2" * 3); //6 console.log("10" / true); //10 console.log("10" - null); // 10 console.log(10+20+"age"+10+28); //+号遇到字符串就会变成拼接符 30age1028
赋值运算符
种类: = += -= *= /= %=
//赋值运算符: = += -= *= /= %=
var a = 10; //将10赋值给a 先算等号右边的,将右边的值赋值给左边
//+= : 累加
a += 2; //在当前基础上+2 等价于a = a + 2
console.log(a); //12
比较运算符
种类: > < >= <= ==(相等) != (不相等) \=\==(恒等、全等) !\==
-
普通的数字比较
console.log(10 > 20); //false
-
字符串比较
//1.字符串比较:一位一位比较,比较的是字符编码 “0”--48 “A”--65 “a”--97 console.log("1000000" < "2"); //true console.log("Abc">"acc"); //false
-
null和undefined比较
//2.null和undefined只和自己,和彼此相等,其他都不相等 console.log(NaN == NaN); //false console.log(null == undefined); //true console.log(undefined == undefined);//true //所有的运算符再进行运算的时候都会进行隐式转换,都会尽量转换为number console.log(null >= 0); //true console.log(null <= 0); //true console.log(null == 0); //false null在进行相等判断的时候不会进行隐式转换
-
== 与 \===的区别
//3.== === console.log("10" == 10); //true,会进行隐式转换 console.log("10" === 10); //false,不会进行隐式转换,一模一样才相等 console.log(null === undefined); //false console.log(NaN === NaN); //false
逻辑运算符
种类:&& || !
-
基本运算
//逻辑运算符 && || ! var c = 98; //从左往右依次运算,代码中条件只能分段写,用&& ||连接多个条件 console.log(100>c>90); //false 100>c-->true true>90--->false //1.&& : 条件都为真结果才为真 console.log(100>c && c>90); //true //2.|| : 条件有一个为真结果就为真 //小于60,大于100打一顿 var s = 59; console.log(s<60 || s>100); //3.!取反:结果是boolean true false console.log(!1); //false console.log(!null); //true console.log(!undefined); //true
-
短路运算
//4.1 &&与短路,两真为真,如果第一个条件为假,第二个条件不执行 // 如果第一个条件为真,执行第二个条件 var a = 1; var b = 1; //第一个条件为假,第二个条件不会执行,执行到那个语句就把那个语句的结果赋值给前面的变量 var c = --a && ++b; console.log(a,b,c); //0 1 0 var a = 1; var b = 10; //第一个条件为真,执行第二个条件,执行到那个语句就把那个语句的结果赋值给前面的变量 var c = ++a && ++b; //2 11 11 console.log(a,b,c); //2 11 11 //4.2 ||或短路,一真为真,如果第一个条件为假,执行第二个条件 // 如果第一个条件为真,第二个条件不执行 var x = 1; var y = 1; //第一个条件为假,执行第二个条件,执行到那个语句就把那个语句的结果赋值给前面的变量 var z = --x || ++y; console.log(x,y,z);//0 2 2 var x = 10; var y = 10; //第一个条件为真,第二个条件不会执行,执行到那个语句就把那个语句的结果赋值给前面的变量 var z = --x || --y; console.log(x,y,z); //9,10,9
三目运算符
语法:条件 ? 条件成立时执行的代码 : 条件不成立时执行的代码
//语法:条件?条件成立时执行的代码:条件不成立时执行的代码
var money = 100000000; //
//如果money > 100000,娶媳妇,否则单身
money > 100000 ? console.log("娶媳妇"):console.log("单身");
var tag = 10 > 20 ? true : false;
console.log(tag); //false