基础8 运算符

一元运算符 只能操作一个值的运算符叫做一元运算符。

递增++和递减--

var num = 100;

++num ; //把num 累加一个1,相当于num = num +1

--num ; //把num 累减一个1,相当于num = num -1

num ++; //同上

num --; //同上

前置和后置的区别

在没有赋值操作,前置和后置是一样的。但在赋值操作时,如果递增或递减运算符前置,那么前置的运算符会先累加或累减再赋值,如果是后置运算符则先赋值再累加或累减。

var num = 100;

var age = ++num ; //num=num+1  age= num值为101    先自增1再赋值变量

var height = num ++; //height=num num=num+1 值为100 先赋值变量再自增1

算术运算符

1.加法

<script type="text/javascript">

  y=6;

  z=y+5;

  alert(z);

</script>

基础8 运算符-搬砖酱的笔记

+ 运算符用于把文本值或字符串变量加起来(连接起来)。如需把两个或多个字符串变量连接起来,请使用 + 运算符。

t1="潘"; t2="晨"; t3="曦"; t4=t1+t2+t3;  t1="潘"; t2=t1+"晨曦";

var  num = 1 + 2; //等于3

var  demo= 1 + NaN; //NaN,只要有一个NaN 就为NaN

var  demo = Infinity + Infinity; //Infinity

var  demo = -Infinity + -Infinity; //-Infinity

var  demo = Infinity + -Infinity; //NaN,正无穷和负无穷相加等NaN

var  demo= 100 + '100'; //100100,字符串连接符,有字符串就不是加法

var   age = '您的年龄是:' + 10 + 20; //您的年龄是:1020,被转换成字符串

var   age  = 10 + 20 + '是您的年龄'; //30 是您的年龄,没有被转成字符串

var   age = '您的年龄是:' + (10 + 20); //您的年龄是:30,没有被转成字符串

var   age = 10 + 对象//10[object Object],如果有toString()或valueOf()则返回10+返回数的值

2.减法

var  num = 100 - 70; //等于30

var  num= -100 - 70 ; //等于-170

var  num = -100 - -70;  //-30,一般写成-100 - (-70)比较清晰

var  demo = 1 - NaN; //NaN,只要有一个NaN 就为NaN

var  demo = Infinity - Infinity; //NaN

var  demo = -Infinity - -Infinity; //NaN

var  demo  = Infinity - -Infinity; //Infinity

var  demo = -Infinity - Infinity; //-Infinity

var  demo = 100 - true; //99,true 转成数值为1

var  demo = 100 - ''; //100,''转成了0

var  demo  = 100 - '70'; //30,'70'转成了数值70

var  demo = 100 - null; //100,null 转成了0

var  demo = 100 - 'Lee'; //NaN,Lee 转成了NaN

var  demo = 100 - 对象//NaN,如果有toString()或valueOf()则返回10-返回数的值

3.乘法

var num = 100 * 70; //7000

var  demo= 100 * NaN; //NaN,只要有一个NaN 即为NaN

var  demo= Infinity * Infinity; //Infinity

var  demo= -Infinity * Infinity ; //-Infinity

var  demo= -Infinity * -Infinity ; //Infinity

var  demo= 100 * true; //100,true 转成数值为1

var  demo= 100 * ''; //0,''转成了0

var  demo= 100 * null; //0,null 转成了0

var  demo= 100 * 'Lee'; //NaN,Lee 转成了NaN

var  demo= 100 * 对象//NaN,如果有toString()或valueOf()则返回10 - 返回数的值

4.除法

var  num= 100 / 70; //1.42....

var  demo= 100 / NaN; //NaN

var  demo= Infinity / Infinity; //NaN

var  demo= -Infinity / Infinity ; //NaN

var  demo= -Infinity / -Infinity; //NaN

var  demo= 100 / true; //100,true 转成1

var  demo= 100 / ''; //Infinity,

var  demo= 100 / null; //Infinity,

var  demo= 100 / 'Lee'; //NaN

var  demo= 100 / 对象; //NaN,如果有toString()或valueOf()则返回10 / 返回数的值

5.求模

var num = 10 % 3; //1,余数为1

var  demo= 100 % NaN; //NaN

var  demo= Infinity % Infinity; //NaN

var  demo= -Infinity % Infinity ; //NaN

var  demo= -Infinity % -Infinity; //NaN

var  demo= 100 % true; //0

var  demo= 100 % ''; //NaN

var  demo= 100 % null; //NaN

var  demo= 100 % 'Lee'; //NaN

var  demo= 100 % 对象; //NaN,如果有toString()或valueOf()则返回10 % 返回数的值

四.关系运算符

用于进行比较的运算符称作为关系运算符:小于(<)、大于(>)、小于等于(<=)、大于等于(>=)、相等(==)、不等(!=)、全等(恒等)(===)、不全等(不恒等)(!==)和其他运算符一样,当关系运算符操作非数值时要遵循一下规则:

1.两个操作数都是数值,则数值比较;

2.两个操作数都是字符串,则比较两个字符串对应的字符编码值;

3.两个操作数有一个是数值,则将另一个转换为数值,再进行数值比较;

4.两个操作数有一个是对象,则先调用valueOf()方法或toString()方法,再用结果比较;

var  demo = 3 > 2; //true

var  demo = 3 > 22; //false

var  demo = '3' > 22; //false

var  demo = '3' > '22'; //true

var  demo = 'a' > 'b'; //false a=97,b=98

var  demo = 'a' > 'B'; //true B=66

var  demo = 1 > 对象; //false,如果有toString()或valueOf()则返回1 > 返回数的值

在相等和不等的比较上,如果操作数是非数值,则遵循一下规则:

1.一个操作数是布尔值,则比较之前将其转换为数值,false 转成0,true 转成1;

2.一个操作数是字符串,则比较之前将其转成为数值再比较;

3.一个操作数是对象,则先调用valueOf()或toString()方法后再和返回值比较;

4.不需要任何转换的情况下,null 和undefined 是相等的;

5.一个操作数是NaN,则==返回false,!=返回true;并且NaN 和自身不等;

6.两个操作数都是对象,则比较他们是否是同一个对象,如果都指向同一个对象,则返回true,否则返回false。

7.在全等和全不等的判断上,比如值和类型都相等,才返回true,否则返回false。

var  demo = 2 == 2; //true

var  demo = '2' == 2; //true,'2'会转成成数值2

var  demo = false == 0; //true,false 转成数值就是0

var  demo = 'a' == 'A'; //false,转换后的编码不一样

var  demo = 2 == {}; //false,执行toString()或valueOf()会改变

var  demo = 2 == NaN; //false,只要有NaN,都是false

var  demo = {} == {}; //false,比较的是他们的地址,每个新创建对象的引用地址都不同

var  demo = {};

var height = age;

var  demo = age == height; //true,引用地址一样,所以相等

var  demo = '2' === 2 //false,值和类型都必须相等

var  demo = 2 !== 2 //false,值和类型都相等了

逻辑运算符 逻辑运算符用于测定变量或值之间的逻辑

基础8 运算符-搬砖酱的笔记

比较运算符在逻辑语句中使用,以测定变量或值是否相等。

基础8 运算符-搬砖酱的笔记

条件运算符  根据条件执行两个语句中的其中一个

test ?语句1 :语句2 当 test 是 true 时执行的语句1,当test 是 false 时执行的语句2.

greeting=(visitor=="PRES")?"Dear President ":"Dear ";

如果变量 visitor 中的值是 "PRES",则向变量 greeting 赋值 "Dear President ",否则赋值 "Dear"。

attr = i == 'x' ? 'left' : i == 'y' ? 'top' : i == 'w' ? 'width' : i == 'h' ? 'height' : i == 'o' ?'opacity' : i != undefined ? i : 'left';

如果i等于x 执行left,否则i等于y执行top,否则i等于w执行width, ……否则i不等于undefined执行i否则执行left。

JavaScript 赋值运算符

基础8 运算符-搬砖酱的笔记