JavaScript之运算符

通过运算符,可以将变量连接成语句,语句是JavaScript代码中的执行单位。

赋值运算符

通常,使用赋值运算符将一个常量值、另外一个变量的值或者表达式的值赋给变量。赋值语句本身是有值的,赋值语句的值就是等号(=)右边被赋的值。因此,赋值运算符支持连续赋值。

算术运算符

JavaScript支持所有的基本算术运算符,下面是7个基本的算数运算符:

  • 加法运算符:+(+还可以作为字符串的连接运算符)
  • 减法运算符:- (-还可以作为求负运算符)
  • 乘法运算符:*
  • 除法运算符:/
  • 求余运算符:%
  • 自加运算符:++,单目运算符,将操作数的值加1。a++代表先使用a执行表达式的运算,然后a自加;++a代表先将a自加,然后将自加后的a代入表达式中进行运算。
  • 自减运算符:–,单目运算符,效果与++类似,只是将操作数的值减1。
    如果需要完成乘方、开方等运算,可借助于Math类的方法完成复杂的数学运算,Math类包含了丰富的静态方法,用于完成各种复杂的数学运算。

位运算符

JavaScript支持的位运算符与Java支持的位运算符基本类似,大致有如下7个位运算符:

  • &:按位与,两个运算数都为1时运算结果才为1,其他都为0
  • |:按位或,两个运算数任一为1时运算结果就为1,其他都为0
  • ~:按位非,运算结果与原来的运算数相反
  • ^:按位异或,两个运算数不同时运算结果就为1,其他都为0
  • <<:左位移运算符,将二进制码向左移动,右边以0补齐。
  • >>:右位移运算符,将二进制码向右移动,左边以最高位补齐。
  • >>>:无符号右移运算符,将二进制码向右移动,左边以0补齐。

加强的赋值运算符

+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=、>>>=
对于x+=y等价于x=x+y,其他运算符类似。归纳起来,所有的双目运算符都能与赋值运算符结果,从而成为功能更加强大的运算符。

比较运算符

JavaScript支持的比较运算符如下:>、>=、<、<=、!=、!== 、 ===、==。
其中!=和!==的区别在于是否支持自动类型转换,前者是不等于,可以支持自动类型转换,只有前后两个变量的值不相等时才会返回true,忽略数据类型的比较,比如5==“5”,由于"5"在需要时自动转换为数值型,故5=="5"将返回true;后者是严格不等于,只要前后两个变量的值不相等,或者数据类型不相等,都将返回true。同理,==和===类似。
值得注意的是,比较运算符不仅可以在数值之间进行比较,也可以在字符串之间进行比较。字符串的比较规则是按字母的Unicode值进行比较。对于两个字符串,先比较它们的第一个字母,其Unicode值大的字符串大;如果它们的第一个字母相同,则比较第二个字母……以此类推。

逻辑运算符:

逻辑运算符主要有如下3个:&&(与)、||(或)、!(非)
值得指出的是,JavaScript虽然没有提供|(按位或,在Java中被称为不短路或)、&(按位与,在Java中被称为不短路与)、^(异或)等运算符,但实际上我们依然可将它们当做逻辑运算符使用。看如下代码:

<script type="text/javascript">
	//使用位运算符代替逻辑运算符
	alert( 6>5 | 3> 4);
	alert( true ^ false);
</script>	

执行上面的代码,将输出两个1,但根据JavaScript的自动类型转换,当数值1转为布尔类型变量时,将会得到true。从这个意义上来看,我们完全可以将|、&和^当初逻辑运算符使用。当把|、&当成逻辑运算符使用时,该运算符将会分别变成不短路或、不短路与。

三目运算符

语法格式如下:

( expression) ? if-true-statement : if-false-statement;

大部分时候,三目运算符都是作为if else的精简写法。三目运算符和if else写法的区别在于:if后的代码块可以有多个语句,但是三目运算符是不支持多个语句的。

逗号运算符

逗号运算符允许将多个表达式排在一起,整个表达式返回最右边表达式的值。注意:函数的参数列表也使用逗号作为分隔符,但是参数列表中的逗号并不是运算符。看如下代码:

<script type="text/javascript">
	var a,b,c,d;
	a = (b = 5,c = 7,d = 56);
	//输出a=56,b=5,c=7,d=56
	document.writeln('a=' + a + ' b=' + b + ' c=' + c + ' d=' +d);
</script>	

void运算符

void运算符用于强行指定表达式不会返回值。看如下代码:

<script type="text/javascript">
	var a,b,c,d;
	//由于使用了void强制取消返回值,因此a的值为undefined
	a = void(b = 5,c = 7,d = 56);
	document.writeln('a=' + a + ' b=' + b + ' c=' + c + ' d=' +d );
</script>	

typeof和instanceof运算符

typeof运算符用于判断某个变量的数据类型。它既可以作为函数来使用,例如typeof(a)可以返回变量a的数据类型;也可作为一个运算符来使用,例如typeof a也可以返回变量a的数据类型。
不同类型参数使用typeof运算符的返回值类型如下:

  • undefined值:undefined
  • null值:object
  • 布尔值:boolean
  • 数字型值:number
  • 字符串值:string
  • 对象:object
  • 函数:function

instanceof运算符用于判断某个变量是否为指定类的实例,如果是,返回true,否则返回false。看如下代码:

<script type="text/javascript">
	var a = [4,5];
	//得到true
	alert(a instanceof Array);
	//JavaScript中所有的类都是Object的子类,故将得到true
	alert(a instanceof Object);
</script>	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值