JavaScript学习笔记之运算篇
1. 运算操作符
(1)+:
加号,它的作用是数字运算和字符串连接,例如
var a = 1 + 2;
document.wirte(a) //结果得3
var a = “a” + “b”;
document.wirte(a) //结果得字符串“ab”
注: 任何数据类型加字符串都等于字符串 。
var a = 1 + “a”;
document.wirte(a) //结果得字符串“1a”
var a = “a” + 1 + 1;
document.wirte(a) //结果得字符串“a11”
var a = 1 + 1 + “a” + 1 + 1;
document.write(a) //打印2a11,从左向右运算
var a = “a”+ true + 1;
document.write(a) //打印 atrue1
var a = 1 + 1 + “a” +( 1 + 2);
document.write(a) //打印 2a3
注:计算机的运算顺序也和数学一样
(2) - 和 * 和 / :
- -减号,例如
var a = 3 - 1;
document.write(a) //打印 a 得到 2
- *乘号,例如
var a = 2 * 1;
document.write(a) //等于 2
- /除号,例如
var a = 0 / 0;
document.write(a) //答案是 NaN
应该得出一个数字类型的数,但是没法表达, 就用NaN (NaN 是Not a Number) 非数,不是数,但是是数字类型
var a = 1 / 0;
document.write(a) //是 infinity
var a = -1 / 0;
document.write(a) //答案是 -infinity
注:我们知道在数学运算上 0 是不能做为被除数的,但在计算机里是可以的,并且根据不同的除数还会得到不同的值当除数为正数时得 infinity (正无穷),当除数也为 0 时,即 0 / 0 时得 NaN (非数),当除数为负数时得 -infinity (负无穷),且 infinity,-infinity,NaN均为数字类型。
(3) % 和 = 和() :
- %摩尔,就是求余,例如
var a = 5%2;
document.write(a) //5%2 是五除二的余数,商二余一
var a =5%1
document.write(a) //是五除一的余数,结果是 0
var a = 1%5;
document.write(a) //意思是1 除以 5 的余数。商 0余 1
var a=4%6;
document.write(a) //意思是4 除以 6 的余数。商 0余 4
- = 等号:赋值 。
- ( ):有括号的先算括号里边的。
注:“-”,“*”,“/“,“%”,”=“,“()” 优先级”=“最弱【赋值符号优先级最低】,”()”优先级较高 。
(4)“++”,“- -”,” +=“,“-=”,“ /=“,“*=”,“ %=” :
- ++:例如 a=a+1 就可以简写成 a++,a=a+1 他是先计算右边的在把值赋到左边去, 就是 a+1 再赋给 a,就是自身+1 再赋给自身就叫++。
例如: - “- -”:例如 a=a-1 就可以简写成 a- -,就是自身-1 再赋给自身就叫- -。
注意:++和–位置还不太固定,可以放前边也可以放后边,以++为例,有个 a++和++a, 他们的区别是先++还是后++,比如说:
var a=10;document.write(a++);
document.write(a); //打印第一个 a 得 10,打印第二个 a 得 11
解析:++放在后边(a++)就是先执行语句后++,也就是第一次先把 a 打印出来然后再 ++,所以第一次打印 a 得 10,然后++,第二次打印 a 得 11
var a=10;
document.write(++a);
document.write(a); //打印第一个 a 得 11, 打印第二个 a 得 11
解析:++放在前边(++a)就是先++再执行语句,就是先++然后把 a 打印出来,所以第 一次打印得到 11,第二次打印也得到 11
var a =10;
var b = ++a - 1 + a++;
document.write(b + “ ” + a) //得 21 12
解析:赋值的顺序是自右向左,计算的顺序是自左向右,此例中,打印 b 和 a(“ ”是 空格),起初 a=10,然后计算 b,++a,先++后执行语句,此时 a 变成 11,11-1 得 10, 10+a++,先执行语句后++,所以 b=10+11=21,然后 a 是 11 再++,打印得到 12
- +=:例如:a=a+10 就可以简写成 a+=10,这个符号只能放中间,其实 a++就是 a+=1 的简写。
- -=:例如:a=a-10 可以简写成 a-=10
- “* =”:例如:a=a*10 可以简写成 a * =10
- /=:例如:a=a/10 可以简写成 a/=10
- %=:例如:a=a%10 可以简写成 a%=10
2. 比较运算符
(1)>:大于号
(2)<:小于号
(3)==:等于号,我们之前所说的=是赋值符号,在 js 里,==才是真正的等于号。
(4)>=:大于等于
(5)<=:小于等于
(6)!=:不等于
比如 var a=1>2,它打印出来是 false,打印出来是 Boolean(布尔值)值,若 var a=1<2, 则打印出来是 true,如果是两个字符串进行比较,他会用自身的阿斯克码进行比较, 在 js 里,NaN 不等于任何东西,包括自己。
3. 逻辑运算符
(1)&&:与
undefined、null、NaN、0、“”、 false 这些值转换为布尔值是 false(假),其他的值 转化为布尔值都是 true(真)。
如果&&只有两个值的话,他会先看第一个表达式的值转化为布尔值是否为真,如果为 真,他就会把第二个表达式的值返回,如果第一个表达式的值为假,他就会直接把第 一个表达式的值返回,不看后面的,比如:
var a=1&&2;
document.write(a); //打印 a 得 2.
var a=1-1&&2;
document.write(a); //打印 a 得 0.
如果&&有三个或多个值,也是一样的,他会一个一个判断,如果这些值都为真,则返 回最后一个表达式的值,如果判断到哪个表达式的值是假的,他就会把这个表达式的 值直接返回,后边的就不看了(遇到假就停)(这里返回得是表达式的值,不是真和假, 真和假是用来判断的),所以&&被叫做短路语句,比如 2>1&&document.write(“内容”),当前边为真的时候,才会执行后边的语句,如果前边是假的,则不执行后边的语句。
(2)|| : 或
||和&&正好相反,如果||有多个值,他会一个一个判断,如果这些值都为假,则返回 最后一个值,如果判断到哪个表达式的值是真的,他就会直接返回这个表达式的值, 后边就不看了(遇到真就停)。比如 :
var a=1||2;
document.write(a); // 打印 a 得 1.
var a=1-1||2;
document.write(a); // 打印 a 得 2.
(3) !:非
!的作用就是把一个值转换为布尔值再取反,如 var a=!123;打印 a 得 false,!!的作 用是直接把一个值转化为布尔值,比如:
var a=!!"";
//打印 a 得到 false.
var a= !!123,
//打印 a 得 true.
声明:作者通过观看渡一教育免费公开课及相关文档总结的笔记,不做任何商业用途,仅供学习交流,感谢指正,如有侵权烦请立马联系,欢迎转载,请注明出处。