ECMA-262描述了一组用于操作数据值的操作符,包括算数操作符、位操作符、关系操作符和相等操作符。
ECMAScript操作符的与众不同之处在于,它们能够使用于很多值,例如字符串、数字值、布尔值,甚至对象。不过,在应用于对象时,相应的操作符通常都会调用对象的valueof()和tostring()方法,以便取得可以操作的值。
一.一元操作符
只能操作一个值的操作符叫做一元操作符。
1.递增和递减操作符 ++ –
递增和递减操作符各有两个版本:前置型和后置型
前置型:变量的值在语句被求值以前改变。
后置型:变量的值在语句被求值之后改变。
2.一元加和一元减操作符
一元加和一元减操作符主要用于基本的的算术运算,也可以用于转换数据类型。
二.位操作符
感觉没用到,跳过阅读。
三.布尔操作符
布尔操作符一共有三个:非、与、或
1.逻辑非 !
逻辑非操作符(!)可以应用于ECMAScript中的任何值,无论这个值是什么数据类型,这个操作符都会返回一个布尔值。逻辑非操作符首先会将它的操作数转换为一个布尔值,然后在对其求反。1
alert(!"blue") //false
逻辑非操作符(!)也可以用于将一个值转换为与其对应的布尔值。1
alert(!!"blue") //true 模拟Boolean()转型函数的行为
2.逻辑与 &&
逻辑与操作符由两个和号表示(&&),有两个操作数。
逻辑与操作符可以应用与任何类型的操作数。在有一个操作数不是布尔值的情况下,逻辑与操作就不一定返回布尔值。
逻辑与操作属于短路操作,即如果第一个操作数能够决定结果,那么就不会对第二个操作数求值。
3.逻辑或 ||
逻辑或操作符由两个竖线符号表示(||),有两个操作数。
逻辑或操作符可以应用与任何类型的操作数。在有一个操作数不是布尔值的情况下,逻辑与操作就不一定返回布尔值。
逻辑或操作属于短路操作,即如果第一个操作数能够决定结果,那么就不会对第二个操作数求值。
可以利用逻辑或的行为来避免为变量赋null或undefined值。1
var myobject=preferredobject || backupobject
四、乘性操作符
ECMAScript定义了3个乘性操作符:乘法、除法和求模。
这些操作符与java、C中的相应操作符用途类似,只不过在操作数为非数值的情况下会执行自动的类型转化。如果参与乘性计算的某个操作数不是数值,后台会先使用Number()转型函数将其转换为数值。
1.乘法(*)
乘法操作符由一个星号(*)表示,用于计算两个数的乘积。
在处理特殊值的的情况下,乘法操作符遵循一些特殊的规则。
2.除法(/)
除法操作符由一个斜线符号(*)表示,用于计算两个数的商。
在处理特殊值的的情况下,除法操作符遵循一些特殊的规则。
3.求模(%)
求模操作符由一个百分号(*)表示1
var result=26%5 //等于1
在处理特殊值的的情况下,除法操作符遵循一些特殊的规则。
#五、加性操作符
与乘性操作符类似,加性操作符也会在后台转换不同的数据类型,然而对于加性操作符,相应的转换规则稍微有些复杂。
1.加法(+)
如果两个操作数都是数值,执行常规的算数加法操作并返回结果。
在处理特殊值的的情况下,加性操作符遵循一些特殊的规则。1
var result=5+"5" //等于"55"
2.减法(-)
如果两个操作数都是数值,执行常规的算数减法操作并返回结果。
在处理特殊值的的情况下,加性操作符遵循一些特殊的规则。1
2
3
4var result1=5-true //等于4,因为true被转换为1
var result2=5-"" //等于5,因为""被转换为0
var result3=5-"2" //等于3,因为"2"被转换为2
var result4=5-NaN //等于NaN
六、关系操作符
ECMAScript定义了4个关系操作符:小于(<)、大于(>)、小于等于(<=)、大于等于(>=)
关系操作符用于对两个值进行比较,这几个操作符都返回一个布尔值。
当关系操作符的操作数使用了非数值时,要进行数据转换或者完成某些奇怪的操作。1
2
3var result1="a"< 3 //false,因为"a"被转换为了NaN
var result2=NaN < 3 //false,任何数与NaN进行比较,结果都是false
var result3=NaN> = 3 //false,任何数与NaN进行比较,结果都是false
七、相等操作符
ECMAScript提供两组操作符:相等和不相等—先转换再比较、全等和不全等—仅比较而不转换
1.相等和不相等(==)、(!=)
这两个操作符都会先转换操作数,然后再比较它们的相等性。
2.全等和不全等(===)、(!==)
这两个操作符不会转换操作数,直接比较它们的相等性。
八、条件操作符
条件(三元)运算符是 JavaScript 仅有的使用三个操作数的运算符。本运算符经常作为if语句的简短形式来使用。1
var iMax = (iNum1 > iNum2) ? iNum1 : iNum2;
在这里例子中,iMax 将被赋予数字中的最大值。表达式声明如果 iNum1 大于 iNum2,则把 iNum1 赋予 iMax。但如果表达式为 false(即 iNum2 大于或等于 iNum1),则把 iNum2 赋予 iMax。
九、赋值操作符 (=)
赋值操作符由等于号(=)表示,其作用就是把右侧的值赋给左侧的变量。
十、逗号操作符
使用逗号操作符可以在一条语句中执行多个操作。
逗号操作符多用于声明多个变量;但除此之外,逗号操作符还可以用于赋值