一.赋值运算符“=”
1)将一个常量赋给变量
2)将一个变量的值赋给另一个变量
3)支持连续赋值,通过使用多个赋值运算符,可以一次给多个变量赋值。
<script type="text/javascript">
var str = 'javascript';
var str2 = str;
var a = b = c = d = 7;
document.write(str+'<br>'+str2+'<br/>'+a+'<br/>'+b+'<br/>'+c+'<br/>'+d);
</script>
输出:
javascript
javascript
7
7
7
7
二.算术运算符
‘+’,’-‘,’*‘,’/','%','++,'--'(加减乘除、求余,自加,自减,如果要完成乘方、开方等运算可借助于Math类的方法完成复杂的数学运算)
’-‘除了可以作为减法运算符外,还可以作为求负运算符
’+‘除作为加法运算符外,还可以作为字符串的连接运算符
三.位运算符
&:按位与
|:按位或
~:按位非
^:按位异或
<<:左位移
>>:右位移
>>>:无符号右位移
<script type="text/javascript">
document.write((5 & 9) + '<br/>' + (5 | 9) + '<br/>' + (5 >> 2 )+ '<br/>' + (5 << 2));
</script>
输出:
1 (5&9)
13 (5|9)
1 ( 5>>2)
20 ( 5<<2)
注意:无符号右移与右移相似,右移运算后左边以操作数二进制码的最高位补齐(参见补码),而无符号右移运算后左边以0补齐
四.加强的赋值运算符
+= :x+=y 相当于x=x+y,下面类同
-=
*=
/=
%=
&=
|=
^=
<<=
>>=
>>>=
五.比较运算符
>
>=
<
<=
!= :不等于
== :等于
!== :严格不等于
=== :严格等于
严格等于和等于的区别:等于支持自动类型转换,严格等于不支持自动类型转换。(严格不等于和不等于的区别同上)
<script type="text/javascript">
document.write((5=='5')+ '<br/>' + (5 ==='5'));
</script>
输出:
true
false
由于自动类型转5等于’5‘返回true,5严格等于’5‘返回false
注意:比较运算符不仅可以在数值之间进行比较,也可以在字符串之间进行比较。字符串的比较规则是按字母的Unicode值进行比较。
<script type="text/javascript">
document.write(('z' > 'abc') + '<br/>');
document.write(('abc' > 'XYZ') + '<br/>');
document.write(('abc' > 'abb') + '<br/>');
</script>
输出:
true
true
true
六.逻辑运算符
&&
||
!
Javascript虽然没有提供&:不短路与,|:不短路或,^:异或等运算符,但实际上我们依然可以将它们当做逻辑运算符使用
不短路逻辑运算符与逻辑运算符的区别:
1)使用不短路逻辑或
<script type="text/javascript">
var a = 5;
var b = 10;
if(a>4|b++>10)
document.write(a + '<br/>' + b);
</script>
输出:
5
11
2)使用逻辑或
<script type="text/javascript">
var a = 5;
var b = 10;
if(a>4||b++>10)
document.write(a + '<br/>' + b);
</script>
输出;
5
10
将(|)改为(||)程序最后输出b的值不同,因为对于短路逻辑或(||)而言,如果第一个操作数为true,将不再对第二个操作数求职,直接返回true,不会计算b++>10这个逻辑表达式,因而没有执行b++的机会。而不短路逻辑或(|)总是执行前后两个操作数。
&与&&的区别:&总会计算前后两个操作数,&&先计算左边的操作数,如果为false,直接返回false不再计算右边的操作数。
七.三目运算符
(expression)?if-true-statement:if-false-satement;
<script type="text/javascript">
(5>3)?document.write("5大于3"):document.write("5不大于3");
</script>
输出:
5大于3
三目运算符可以作为if else的精简写法,但是三目运算符不支持语句块,if-true-statement和if-false-satement都只能是单条语句。
八.逗号运算符
逗号运算符允许多个表达式排在一起,整个表达式返回最右边表达式的值。
<script type="text/javascript">
var a, b, c, d;
a = (b = 5, c = 7, d = 9);
document.write('a=' + a + '<br/>');
document.write('b=' + b + '<br/>');
document.write('c=' + c + '<br/>');
document.write('d=' + d + '<br/>');
</script>
输出:
a=9
b=5
c=7
d=9
九.void运算符
void运动算符用于强制指定表达式不会返回值
<script type="text/javascript">
var a, b, c, d;
a = void(b = 5, c = 7, d = 9);
document.write('a=' + a + '<br/>');
document.write('b=' + b + '<br/>');
document.write('c=' + c + '<br/>');
document.write('d=' + d + '<br/>');
</script>
输出:
a=undefined
b=5
c=7
d=9
十.typeof和instanceof运算符
typeof运算符用于判断某个变量的数据类型,它既可以作为函数使用,例如typeof(a)可以返回变量a的数据类型,也可以作为一个运算符来使用,
typeof a 也可以返回变量a的数据类型。
不同类型的变量,使用typeof返回值如下:
undefined值 :undefined
null:object
布尔型值:boolean
数字型值:number
字符串值:string
对象:object
函数:function
<script type="text/javascript">
var a = 5;
var b = true;
var str = 'hello world';
document.write('a ' + typeof a + '<br/>');
document.write('b ' + typeof(b) + '<br/>');
document.write('str ' + typeof str + '<br/>');
document.write('d ' + typeof d + '<br/>');
</script>
输出:
a number
b boolean
str string
d undefined
instanceof用于判断某个变量是否为指定类的实例,如果是返回true,否则返回false
<script type="text/javascript">
var a = [0, 1, 3];
document.write((a instanceof Array)+'<br/>');
document.write((a instanceof Object) + '<br/>');
document.write((a instanceof Number) + '<br/>');
document.write((a instanceof String) + '<br/>');
</script>
输出:
true
true
false
false