1.算术运算符
+ - * / % ++ --
// 规律:不同数据类型在进行运算的时候会尽量转为数字类型(内置帮我们进行转换,并且符合Number的规律)
// 引用数据类型转为数字,先内置调用toString()方法,然后再去转为数字
// +
// 1.+ 号两边都是数字 表示加法
// 2.如果一边是字符串就会将另一边也转为字符串进行拼接
// 3.两边都不是字符串,如果不是数字会尽量转为数字进行运算(符合Number的规律)
// 4.一旦遇到引用数据类型,会先将引用数据类型先转为字符串(内置调用toString()方法)然后再进行运算
// +
console.log(100+100);//200
console.log(100+200+"1");//3001
console.log(100+{});//100[object Object]
console.log(100+true);//101
console.log(100+null);//100
console.log(100+undefined);//100 + NaN ->NaN
console.log(null + []);//"null" =>null + "" => "null"
console.log([]+{}); //[object Object]
// -
console.log(10-10);//0
console.log(10-"5");//5
console.log(true-"5");//-4
console.log(true-[]);//1
console.log(null - undefined); //NaN
// *
console.log(100 * [10]); //1000
console.log(100 * {}); // 100 * [object Object] => 100 * NaN => NaN
// /
console.log(100/0);//Infinity
console.log(true /null);//Infinity
console.log([10]/2); // 5
// % 取模 取余
console.log(10 % 2); //0
console.log("100" % 2); //0
console.log("100" % 3); //1
console.log("100" % {}); //NaN
-
++
-
首先++分为++在前和++在后,不管++在前还是++在后都表示自身加1,++在后先进行运算然后再自身加1,++在前是先自身加1,再进行运算
-
-
--
-
首先--分为--在前和--在后,不管--在前还是--在后都表示自身减1,--在后先进行运算然后再自身减1,--在前是先自身减1,再进行运算
-
var x = 2;
// 5
// 2 + 3 + 5 - 5 - 7 + 6 + 6 => 10
console.log(x++ + x++ + ++x - x++ - ++x + --x + x--);
console.log(x);// 5
2.赋值运算符
= :赋值运算符 将等号右边的值赋值给左边
+=:
-=:
/=:
%=:
3.比较运算符
比较运算符返回结果是布尔值
普通比较
> >= < <= ==(等于) !=
-
不同数据类型进行比较,会先尽量转为数字再进行比较
console.log(10>20);
console.log(10>"2");
console.log(10>"20");
console.log(true > null);//true
console.log(10>"abc");//false
2.字符串进行比较首先是按位进行比较(只要有一位出结果了后边的就不再比较了),按照ASCII值进行比较
console.log("80">"200");//true
console.log("a">"Z");//true
console.log("aBCdklasjdklasjdlka">"Zdasdasdasaaaaaaaa");//true
console.log("ab">"acd");//false
3.null等于undefined 但是null和undefined与其它数据都不相等
console.log(null == undefined);
绝对比较
=== (绝对等于) !== (绝对不等于)
1.不同数据类型一定不相等
console.log(true === 1);
console.log("100" === 100);
4.逻辑运算符
1.自动进行布尔值的判断
2.只有0 NaN null undefined "" 是假的其它的都是真的
&& 与(且) 都真才为真,一假即假
|| 或 都假才假,一真即真
! 非 取反
//! 现将当前这个数据转为布尔值然后在进行取反(返回值是布尔值)
-
其它类型转为布尔
Boolean(数据)= !!数据(先转为布尔值->取反再取反)
5.三目运算符
三目运算符又称之为问号冒号表达式
条件?条件成立执行的代码段:条件不成立执行的代码段;
var score = 70;
score > 80 ? console.log("我考试及格了"):console.log("中午不吃饭了~~~");
6.运算符的优先级及结合性
算术运算符 先 * / % 最后+ - 要提高运算的优先级加()
比较运算符不可以连写
-
10 > 5 > 2 =>false -> true > 2 -> 1 > 2 => false
-