首页 > 代码库 > JavaScript 知识点之运算符

JavaScript 知识点之运算符

一、算术运算符和赋值运算符

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); // 345var str2 = 3 + 4 + "5";alert(str2); // 75

也许这样的结果会让你懊恼,所以如果你相要做的是加法运算,请确保两个数都是数字。但是这有时候也会为我们带来便利。比如数字加上空串后,可以转换为字符串类型。

1 var num = 5;2 var str = 5 + ‘‘;3 alert(typeof str); // string4 alert(str); // 5

JavaScript中的除法运算符并不是像一些其它语言取整的,它的结果可以是小数。

alert(5 / 2); // 2.5

二、关系运算符

JavaScript提供的关系运算符有小于(<)、大于(>)、小于等于(<=)、大于等于(>=)、相等(==)、不等(!=)、全等(恒等)(===)、不全等(不恒等)(!==)。
他们可应用于数字和字符串。对于===,要求值和类型都有相等。而对于==,只要转换后的值相等即可。这同样也适用于!= 和 !==. 

alert(5 === ‘5‘); // falsealert(5 == ‘5‘); // true

请尽量使用===和!==而不是另一组,看了下面的的一些奇怪的例子你就知道了。

alert(‘‘ == ‘0‘); // falsealert(0 == ‘‘); // truealert(0 == ‘0‘) // truealert(false == ‘false‘) // falsealert(false == ‘0‘) // truealert(false == undefined) // falsealert(false == null) // falsealert(null == undefined); // truealert(undefined == 0); // falsealert(null == 0); // falsealert(‘\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很少被用来执行位操作。

未完待续......

JavaScript 知识点之运算符