javascript几种运算符
目录
运算符
分类
-
运算符:算术运算符,赋值运算符,比较运算符,逻辑运算符,三目运算符
-
表达式:算术表示式,赋值表达式,判断表达式,逻辑表达式
算术运算符
+ - * / %取余 自增++ 自减--
-
数据在进行运算的时候,会尽量转为数字在进行运算(内置帮我们去转的,属于隐式转换)符合Number的规律
-
+ :一旦遇到字符串表示拼接 将另一边数据也转为字符串
-
console.log(10 + 10); console.log(10 + "10"); //"10" + "10" =>"1010" console.log(10 + 20 + "100"); //30 + "100" => "30" + "100" => "30100" console.log(true + 100); // 1 + 100 =>101 console.log(false + null); // 0 + 0 => 0 console.log("" + 100); // "" + "100" => "100" console.log(10 - "5"); // 10 - 5 = >5 console.log(10 - "5px"); // 10 - NaN =>NaN console.log(10 - null); // 10 - 0 => 10 console.log(10 - true); // 10 - 1 => 9 console.log(10 * null); // 10 * 0 => 0 console.log(10 * true); // 10 * 1 => 10 console.log(100 / ""); // 100 / 0 => Infinity // % 取余(取模) console.log(100 % "5"); //0 console.log(100 % "3"); //1
-
++ :不管++在前还是++在后都表示自身加1,++在前表示先自身加1,然后再进行运算,++在后表示先进行运算然后再自身加1
-
-- :不管--在前还是--在后都表示自身减1,--在前表示先自身减1,然后再进行运算,--在后表示先进行运算然后再自身减1
var a = 5;
// a++;
++a;
console.log(a);//6
var b = 3;
// var c = ++b;
// console.log(c,b); //4 4
// var c = 3;
// console.log(c, b); //3 4
var e = 2; //10
// 2 + 3 + 5 + 5 + 7 - 7 - 9 + 9
console.log(e++ + e++ + ++e + e++ + ++e - e++ - ++e + e++); //15
console.log(e); //10
var f = 3; //5
// 3 + 4 + 6 - 5 - 5 + 4 - 5 - 4 + 4 + 4
console.log(f++ + f++ + ++f - --f - f-- + f++ - f-- - f-- + ++f + f++); //6
console.log(f); //5
// ++ -- 同样存在隐式转换
var test1 = "10";
--test1;
console.log(test1);//9
赋值运算符
= 赋值 将等号右边的值赋值给等号左边
+= -= *= /= %=
var a = 10;
console.log(a);
// 在a的基础上增加 5
// 给a重新赋值
// a = 15;
// console.log(a);
// a = a + 5;
a+=5; //相当于 a = a + 5;
console.log(a);
var b = 100;
b -= 50; //<=> b = b - 50;
console.log(b);
//...
比较运算符
普通比较
== 等于 > >= < <= != 不等于
// 1.数据在进行比较的时候,会尽量转为数字进行比较(内置帮我们去转的,属于隐式转换)符合Number的规律
console.log(10 > 5);//true
console.log(10 > "5");// 10 > 5 true
console.log(true > false);//1 > 0 => true
console.log("100px" > 100);// NaN > 100 => false
console.log(null > "");// 0 > 0 =>false
console.log(null >= "");// 0 > 0 =>true
console.log(10 != "20"); //10 != 20 => true
// 2.null等于undefined 但是null和undefined与其它数据类型都不相等
//null == 0 =>false
console.log(null == "");//false
console.log(null == undefined);//true
console.log(NaN == NaN);//false
console.log(NaN != NaN);//true
console.log(undefined == undefined); //true
console.log(undefined == 0); //false
console.log(null == undefined);//true
console.log(4 == 'abc'); //false
console.log(NaN == NaN);//false
console.log(NaN != NaN);//true
console.log(null == null); //true
console.log(null !== undefined);//true
console.log(3 !== "3");//true
console.log(null >= 0); true
console.log(null <= 0); true
// 3.字符串比较是按照ASCII(Unicode编码)值进行比较的,并且是按位进行比较的一旦某一位比较出结果,就不再比了
console.log("158" > "1399999999999931231");//false
// 0 - 9 :48 - 57
// A - Z: 65 - 90
// a - z: 97 - 122
绝对比较
=== 绝对等于 !== 绝对不等于
// 1.不同数据类型一定不相等
//=== 绝对等于 (不仅要值相等,数据类型也要一样)
// !== 10 !== "10" 10 != "10"
console.log(0 == "");
console.log(0 === "");
console.log(9 === "9");
console.log(null === undefined);
console.log("10" !== 10);//true
逻辑运算符
&&与 || 或 ! 非
-
&&与 :表示且的的关系,都为真才为真,一假即假
-
||或:表示或者的关系,都为假才为假,以真即真
// &&与 || 或
console.log(true && true); //true
console.log(true && false && true); //false
console.log(true || false);//true
// 逻辑运算符会自动检测当前数据类型的真假 符合Boolean的规律
// 根据自身的规律返回对应位置的值
// 短路运算
var res = 66 && "10" && "哈哈" && 100;
console.log(res);//100
var res1 = 66 && null && "哈哈" && 100;
console.log(res1);//null
var res2 = "aa" || "bb" || "";
console.log(res2); //"aa"
var res3 = "" || null || undefined || NaN;
console.log(res3);//NaN
-
! 非:取反
// 先将当前数据转为布尔值符合Number的规律,然后再进行取反
console.log(!10); // true - > false
console.log(!20);//true -> false
console.log(!"哈哈"); //true -> false
console.log(!""); //false -> true
运算符的优先级
三目运算符
条件 ? 条件成立执行的代码段 : 条件不成立执行的代码段; (三目运算符又称之为问号冒号表达式,一般应用于简单的判断相当于if..else)
// 条件 ? 条件成立执行的代码段 : 条件不成立执行的代码段; (三目运算符又称之为问号冒号表达式,一般应用于简单的判断相当于if..else)
// 条件为真执行的是问号后边的代码段 条件为假执行的是冒号后边的代码段
var score = 50;
score >= 60 ? console.log("中午吃点好的") : console.log("中午不吃了~~~");
// 单个数据会自动检测真假
"" ? console.log("真的"): console.log("假的");