运算符
一元运算符:只能操作一个值的运算符
算术运算符
关系运算符
逻辑运算符
位运算符
赋值运算符
其他运算符
一元运算符
1、递增++和递减--
var box = 100; ++box; //把box累加一个1,相当于box=box+1 --box; //把box累减一个1,相当于box=box-1 box++; //同上 box--; //同上
2、前置和后置的区别
在没有赋值操作,前置和后置是一样的。但在赋值操作时,如果递增或递减运算符前置,那么前置的运算符会先累加或累减再赋值,如果是后置运算符则先赋值再累加或累减。
var box = 100; var age = ++box; //age的值为101 var height = box++; //height值为100
3、其他类型应用一元运算符的规则
var box = ‘89‘; box++; //90,数值字符串自动转换成数值 var box = ‘ab‘; box++; //NaN,字符串包含非数值转成NaN var box = false; box++; //1,false转成数值是0,累加就是1 var box = 2.3; box++; //3.3,直接加1 var box = { //1,不设置toString或valueOf即为NaN toString: function() { return 1; } }; box++;
4、加和减运算符
加运算规则如下:
var box = 100; +box; //100,对于数值,不会产生任何影响 var box = ‘89‘; +box; //89,数值字符串转换成数值 var box = ‘ab‘; +box; //NaN,字符串包含非数值转成NaN var box = false; +box; //0,布尔值转换成相应的数值 var box = 2.3; +box; //2.3,没有变化 var box = { //1,不设置toString或valueOf即为NaN toString: function() { return 1; } }; +box;
减运算规则如下:
var box = 100; -box; //-100,对于数值,直接变负 var box = ‘89‘; -box; //-89,数值字符串转换成数值 var box = ‘ab‘; -box; //NaN,字符串包含非数值转成NaN var box = false; -box; //0,布尔值转换成相应的数值 var box = 2.3; -box; //-2.3,没有变化 var box = { //-1,不设置toString或valueOf即为NaN toString: function() { return 1; } }; -box;
正运算符和负运算符可像上面进行类型转换
算术运算符
ECMAScript定义了5个算术运算符,加减乘除求模(取余)
如果在算术运算的值不是数值,那么后台会先使用Number转型函数将其转换为数值(隐式转换)
1、加法
var box = 1 + 2; //等于3 var box = 1 + NaN; //NaN,只要有一个NaN就为NaN var box = Infinity + Infinity; //Infinity var box = -Infinity + -Infinity; //-Infinity var box = Infinity + -Infinity; //NaN,正无穷和负无穷相加等于NaN var box = 100 + ‘100‘; //字符串连接符,有字符串就不是加法 var box = ‘您的年龄是:‘ + 10 + 20; //您的年龄是:1020,被转换成字符串 var box = 10 + 20 +‘是您的年龄‘; //30是您的年龄,没有被转换成字符 var box = ‘您的年龄是:‘ + (10 + 20); //您的年龄是:30,没有被转换成字符串 var box = 10 + 对象; //10[object Object],如果有toString()或valueOf()则返回 10+返回的数值
2、减法
var box = 100 - 70; //等于30 var box = -100 - 70; //等于-170 var box = -100 - -70; //-30,一般写成-100 - (-70)比较清晰 var box = 1 - NaN; //NaN,只要有一个NaN就为NaN var box = Infinity - Infinity; //NaN var box = -Infinity - -Infinity; //NaN var box = Infinity - -Infinity; //Infinity var box = -Infinity - Infinity; //-Infinity var box = 100 - true; //99,true转成数值为1 var box = 100 - ‘‘; //100,‘‘转成了0 var box = 100 - ‘70‘; //30,‘70‘转成了数值70 var box = 100 - null; //100,null转成了0 var box = 100 - ‘Lee‘; //NaN,Lee转成了NaN var box = 100 - 对象; //NaN,如果有toString()或valueOf()则返回 10-返回的数值
3、乘法
4、除法
5、求模(取余)