算术运算符:
+、-、*、/、%;
在使用运算符进行运算时,会出现隐式类型转换。其中:
+:如果运算时,加号两边有一边是字符型数据,那么将进行字符的拼接,也就是将另一边数据当成字符进行运算。
-、*、/、%:运算时,直接将两边的数据当成数值型数据进行运算。将不是数值型的数据进行了隐式类型转换。
var a = 5; var b = 2; console.log(a + b); //7 console.log(a - b); //3 console.log(a * b); //10 console.log(a / b); //2.5 console.log(a % b); //1 //这是当两边都为数值型数据进行的运算结果。 var a = "5"; var b = 2; console.log(typeof (a + b)); //string console.log(a + b); //52 console.log(a - b); //3 console.log(a * b); //10 console.log(a / b); //2.5 console.log(a % b); //1 //当一边为字符型数据时产生了隐式类型转换,结果和上面有明显不同。 var a = "5"; var b = "2"; console.log(typeof (a + b)); //string console.log(a + b); //52 console.log(a - b); //3 console.log(a * b); //10 console.log(a / b); //2.5 console.log(a % b); //1 //当两边都为字符型数据时结果和一个字符相同。
关系运算符:
> >= < <= == != === ;
关系运算符中也有简单的隐式类型转换。
1、当两边数据都为数值时,正常比较。
2、当运算符两边有一边为数值时,发生隐式类型转换,将另一边的数据转换为数值型进行比较。
3、当运算符两边都是字符时,以字符的ASCII码进行逐位比较,一旦比较出结果立刻停止比较,返回结果。
var a = 101; var b = 20; console.log(a > b); //t console.log(a >= b); //t console.log(a < b); //f console.log(a <= b); //f console.log(a != b); //t //当两边都为数值时的比较结果。 var a = "101"; var b = 20; console.log(a > b); //t console.log(a >= b); //t console.log(a < b); //f console.log(a <= b); //f console.log(a != b); //t //当两边一边为字符时,发生隐式类型转换。 var a = "101"; var b = "20"; console.log(a > b); //f console.log(a >= b); //f console.log(a < b); //t console.log(a <= b); //t console.log(a != b); //t //当两边都为字符时,没有隐式类型转换。
注意:=== 不会产生隐式类型转换,在使用它进行比较时,不仅比较值,还会比较数据类型。
console.log(10 === 10) //t console.log(10 === "10") //f
赋值运算符:
= += -= *= /= %= ;
赋值运算符顾名思义,意味着将一个值赋给某个东西。
运算方式:将等号左边的值赋给等号右边的变量。
// += 意为:var a = 10; a = a + 1; console.log(a); //11 var a = 10; a += 1; console.log(a); //11
相同的 -= *= /= %= 和上面的+=代表相同的意思,只是算数运算符不同。
也就是先进行算数运算符的计算,再把计算完的值赋给变量。它的隐式类型转换也就和算数运算符一样。
自增++,自减-- 运算符
var a = 10; console.log(a++) //10 console.log(++a) //11
前自增 ++a:
先计算,再使用
后自增 a++:
先使用,后计算
自减也有前自减和后自减,运算方式和自增一样。
逻辑运算符:
// 或||,且&&,非!
1、或 ||
console.log(true || true) //true console.log(true || false) //true console.log(false || true) //true console.log(false || false) //false //或的两边只要出现一个true,最后结果就是true。只有两边都为false时,结果才是false。
2、且 &&
console.log(true && true) //true console.log(true && false) //false console.log(false && true) //false console.log(false && false) //false //且的两边只要有一个false结果就是false,只有在两边都为true时结果才是true。
3、非 !
console.log(!true) //false console.log(!false) //true //非就是取反。是true则为false,是false则为true。