一、算术运算符和赋值运算符
JavaScript提供的算术运算符有+, -, *, /, %. 运算后的值通过 = 赋值。对于 x = x operator y, 我们也可以应用复合赋值运算符,即 x += y 相当于 x = x + y.
+ 也可用作字符串的连接,如
1 var str = ‘hello ‘ + ‘world‘; 2 alert(str); // hello world
如果你试图将一个字符串加到数字上(或其它类型上)时,其它类型将会被先转换成字符串。所以请接受下面的事实:
var str1 = "3" + 4 + 5; alert(str1); // 345 var str2 = 3 + 4 + "5"; alert(str2); // 75
也许这样的结果会让你懊恼,所以如果你相要做的是加法运算,请确保两个数都是数字。但是这有时候也会为我们带来便利。比如数字加上空串后,可以转换为字符串类型。
1 var num = 5; 2 var str = 5 + ‘‘; 3 alert(typeof str); // string 4 alert(str); // 5
JavaScript中的除法运算符并不是像一些其它语言取整的,它的结果可以是小数。
alert(5 / 2); // 2.5
二、关系运算符
JavaScript提供的关系运算符有小于(<)、大于(>)、小于等于(<=)、大于等于(>=)、相等(==)、不等(!=)、全等(恒等)(===)、不全等(不恒等)(!==)。
他们可应用于数字和字符串。对于===,要求值和类型都有相等。而对于==,只要转换后的值相等即可。这同样也适用于!= 和 !==.
alert(5 === ‘5‘); // false alert(5 == ‘5‘); // true
请尽量使用===和!==而不是另一组,看了下面的的一些奇怪的例子你就知道了。
alert(‘‘ == ‘0‘); // false alert(0 == ‘‘); // true alert(0 == ‘0‘) // true alert(false == ‘false‘) // false alert(false == ‘0‘) // true alert(false == undefined) // false alert(false == null) // false alert(null == undefined); // true alert(undefined == 0); // false alert(null == 0); // false alert(‘\t\r\n‘ == 0); // true
O(∩_∩)O~晕了吧!但如果上面的操作都使用===,返回的结果都是false, 因为两个操作数的类型不同。
三、逻辑运算符
JavaScript有三个逻辑运算符:逻辑与(AND)、逻辑或(OR)、逻辑非(NOT)。其中逻辑与(&)和逻辑或(||)具有短路原则。
即对于a && b, 如果a为假,b不被计算,结果直接返回false;对于a || b, 如果a为真,b不会被计算,结果直接返回true. 这个特性可以为我们带来便利,比如:
在访问对象的属性前,我们先判断一下对象是否为空:
var name = o && o.getName();
设置缺省值:
var name = otherName || "default";
避免为变量赋null 或undefined 值。
var obj = oneObject || twoObject; //把其中一个有效变量值赋给obj
四、位运算符
位运算符有七种,分别是:位非NOT(~)、位与AND(&)、位或OR(|)、位异或XOR(^)、左移(<<)、有符号右移(>>)、无符号右移(>>>)。
在C++中,位运算符处理的是整数。JavaScript没有整数类型,只有双精度的浮点数。因此,位操作符把它们的数字运算数先转换成整数,接着执行计算,然后再转换回去。在C++中,这些位运算符接近于硬件处理,所以非常快。JavaScript的执行环境一般接触不到硬件,所以非常慢。JavaScript很少被用来执行位操作。
未完待续......