js运算符
####运算符种类
算术运算符:+
、-
、*
、/
、%
分别是加、减、乘、除、取余。
赋值运算符:=
、+=
、-=
、*=
、/=
、%=
、++
、--
。中间五个类似,比如:a+=5 等价于a=a+5。++和
–`类似,i++等价于++i等价于i=i+1。但是某些时候
i++和++i并不一样,在涉及输出、运算、赋值等时候,是先做完输出等操作,再自增(--
类似)。
逻辑运算符: 如下表格。
运算符 | 描述 | 例子 |
---|---|---|
&& | 且,如果a&&b,如果a=true就会判断b,否则不会判断后面的b. | false&&alert(1)结果不会有弹框。 |
|| | 或,与&&相反,如果第一个为true,则不执行后面的判断,但优先级低于&&。 | true||console.log(1)控制台不会输出1. |
! | 非, | console.log(!true),打印出false。 |
**关系运算符:**结果是布尔类型的(true/false)。>
、<
、>=
、<=
、==
、===
、!=
。其中==只会比较内容是否一致,===会比较内存地址(不只内容比较,还有类型)。‘111’==111返回true,‘111’===111返回false。
逗号运算符:,
。顺序执行。var a=1,b=2.
位运算符:>>(左移)、>>(右移)、>>>(无符号右移)、|(位或)、&(位与)、^(位异或)、~(取反)。这些操作都是对二进制的操作。
位运算符的运用
-
快速乘以或除以2^n(n为整数),比如a>>1是将a的二进制左移1位,多出的一位补零,其实相当于a=a*2。>>>是无符号的右移。通过位运算比单纯的乘法更快。
-
取整,比如a=10.5,a&15会取得10。15二进制为1111.(|0,>>0…都可以,因为二进制没有小数点)
-
交换
var a = 1 ,b = 2; a = a ^ b; b = a ^ b; a = a ^ b; console.log(a,b); 此时a与b会交换过来。
类型转换
- 隐式转换
1 + 1 = 2;
1 + '1' = '11';
5 + null = 5;
'5' - 1 = 4;
3 * '2' = 6;
- 强制转换
var num = '10.1px';
console.log(Number(num)); //NaN
console.log(parseInt(num)); //10
console.log(parseFloat(num)); //10.1
parseInt和parseFloat会忽略数字后面的字符。
parseInt(a,b)还可以转换其他进制为十进制。a是进制数的字符串形式,b是几进制。
isNaN可以判断是否是数字,但是不好用,比如isNaN("")=false.还有个Number.isNaN()方法。