算术运算符

一.+(加法),-(减法),*(乘法),/(除法),%(取模/取余):

let a=10,
     b=20;
alert(a+b);//输出的结果是30
let x=0.1,
     y=0.2;
alert(a+b);//输出的结果是3000000004;因为他们是以二进制的形式进行计算的,所以会出现这种结果,要想严格的话,可以给他们变成整数进行相加,然后在除以相应的倍数就行了

减法和乘除也是一样的,这里就不一一演示了

%(取模)这里并不是百分比的意思,是取余的意思

alert(10%3)//这里弹出的结果是1
alert(10.5%3)//这里的结果是1.5,如果有小数的话,小数是不参与计算的。

二.隐式类型转换

1.加法的隐式转换

let a="10",
     b=20;
alert(a+b)//这里的结果是1020的字符串,在运算的时候被同化了
alert("123"+true)//得出的结果是"123true"
alert(true+8);//结果是9
alert([]+[])//结果是啥都没有,没有意义的
alert(1+2+"8");//结果是38,这里也是根据算数运算的规律来运算的。
alert("8"+1+2);//结果是812,这是812字符串
得出的结论就是:1.如果两个数相加,加号两边任意一遍有字符串,那么都会进行隐式的转换在进行拼接。2.布尔值和数字进行相加,会转换成1 0

2.减法的隐式转换

let a=30,
     b=20;
alert(a-b);//结果是10;
alert("50p"-10);//结果是Nan
得出的结论是两个数相减,减号两边任意一边有数字,那么都会进行隐式转换成数字在相减,乘法和除法还有模也是相同的。如果出现不合理的运算的时候会出现Nan(不是一个数字)。Nan是数据类型是Number。

三.自增自减

let a=10;
     a++;
alert(a);//结果是11
let b=a++;//运算过程是:b=a;a=a+1;
let b=++a;//运算过程是:a=a+1;b=a;
     ++a;
alert(a);//结果也是11
得出的结论就是虽然结果一样,但是过程不一样。a++是表达式的值,++a是自曾1之后的值。
let a=10;
let b=5;
alert(a+b);//结果是15;
alert(a++b);//结果是出错,电脑的解析过程是(a++)b;这样就不合理了。
alert(a+++b);//结果是15,电脑的解析过程是(a++)+b,也就是10+5。
alert(a++++b);//结果是出错,电脑的解析过程是(a++)(++b);这样也不合理。
alert(a+++(+b));//结果是15,电脑的解析过程是(a++)+(+b);也就是10+5。
alert(a+++++b);//结果是16,电脑的解析过程是(a++)+(++b);也就是10+6。
注意:自减的运算方式和自增是一样的。
let a="5";
a++;
alert(a);//结果是6;
得出的结论是++或--会强行变成数字进行运算,最终的结果也是数字。

你可能感兴趣的:(算术运算符)