运算符

  JavaScript提供了相当丰富的运算符,运算符也是JavaScript语言的基础。通过运算符,可以将变量连接成语句,语句是JavaScript代码中的执行单位。
  JavaScript的运算符并不比其他高级语言的运算符少,它同样提供了算术运算符、逻辑运算符、位运算符。JavaScript支持的运算符,与Java、C支持的运算符非常相似。下面依次介绍JavaScript中的运算符。

赋值运算符

  赋值运算符用于为变量指定变量值,与Java、C类似,JavaScript也使用“=”作为赋值运算符。通常,使用赋值运算符将一个常量值赋给变量。

算术运算符

  JavaScript支持所有的基本算术运算符,这些算术运算符用于执行基本的数学运算:加、减、乘、除和求余自加自减等。

位运算符

  JavaScript支持的位运算符与Java支持的位运算符基本相似,大致有如下7个位运算符。
  ➢ &:按位与。
  ➢ |:按位或。
  ➢ ~:按位非。
  ➢ ^:按位异或。
  ➢ <<:左位移运算符。
  ➢ >>:右位移运算符。
  ➢ >>>:无符号右移运算符。

加强的赋值运算符

  赋值运算符可以与算术运算符、位运算符等结合,从而成为功能更加强大的运算符。结合后的加强运算符如下。
  ➢ +=:对于x += y,即对应于x = x + y。
  ➢ −=:对于x −= y,即对应于x = x − y。
  ➢ *=:对于x *= y,即对应于x = x * y。
  ➢ /=:对于x /= y,即对应于x = x / y。
  ➢ %=:对于x %= y,即对应于x = x % y。
  ➢ &=:对于x &= y,即对应于x = x & y。
  ➢ |=:对于x |= y,即对应于x = x | y。
  ➢ ^=:对于x ^&= y,即对应于x = x ^ y。
  ➢ <<=:对于x <<= y,即对应于x = x << y。
  ➢ >>=:对于x >>= y,即对应于x = x >> y。
  ➢ >>>=:对于x >>>= y,即对应于x = x >>> y。

比较运算符

  比较运算符用于判断两个变量或常量的大小,比较运算的结果是一个布尔值。JavaScript支持的比较运算符如下。
  ➢ >:大于,如果前面变量的值大于后面变量的值,则返回true。
  ➢ >=:大于等于,如果前面变量的值大于等于后面变量的值,则返回true。
  ➢ <:小于,如果前面变量的值小于后面变量的值,则返回true。
  ➢ <=:小于等于,如果前面变量的值小于等于后面变量的值,则返回true。
  ➢ !=:不等于,如果前后两个变量的值不相等,则返回true。
  ➢ ==:等于,如果前后两个变量的值相等,则返回true。
  ➢ !==:严格不等于,如果前后两个变量的值不相等,或者数据类型不同,都将返回true。
  ➢ ===:严格等于,必须前后两个变量的值相等,数据类型也相同,才会返回true。

逻辑运算符

  逻辑运算符用于操作两个布尔型的变量或常量。逻辑运算符主要有如下3个。
  ➢ &&:与,必须前后两个操作数都为true才返回true,否则返回false。
  ➢ ||:或,只要两个操作数中有一个为true,就可以返回true,否则返回false。
  ➢ !:非,只操作一个操作数,如果操作数为true,则返回false;如果操作数为false,则返回true。

三目运算符

  三目运算符只有一个“? :”,三目运算符的语法格式如下:

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

  三目运算符的运算规则是:先对逻辑表达式expression求值,如果逻辑表达式返回true,则执行第二部分的语句;如果逻辑表达式返回false,则返回第三部分的语句。

逗号运算符

  逗号运算符允许将多个表达式排在一起,整个表达式返回最右边表达式的值。

例子
    // 声明变量a , b , c , d。
    var a , b , c , d;
    // 使用逗号运算符为a赋值,最右边的表达式为56,因此a的值为56。
    a = (b = 5, c = 7, d = 56);
    // 输出四个变量的值。
    document.write('a = ' + a + ' b = '
        + b + ' c = ' + c + ' d = ' + d);

void运算符

  void运算符用于强行指定表达式不会返回值。

例子
    // 声明变量a,b,c,d。
    var a , b , c , d;
    // 虽然最右边的表达式为56,
    // 但由于使用了void强制取消返回值,因此a的值为undefined。
    a = void(b = 5, c = 7, d = 56);
    // 输出四个变量的值。
    document.write('a = ' + a + ' b = '
        + b + ' c = ' + c + ' d = ' + d);

typeof和instanceof运算符

  typeof运算符用于判断某个变量的数据类型,它既可作为函数来使用,例如typeof(a)可返回变量a的数据类型;也可作为一个运算符来使用,例如typeof a也可返回变量a的数据类型。
  不同类型参数使用typeof运算符的返回值类型如下:
  ➢ undefined值:undefined。
  ➢ null值:object。
  ➢ 布尔型值:boolean。
  ➢ 数字型值:number。
  ➢ 字符串值:string。
  ➢ 对象:object。
  ➢ 函数:function。
  与typeof类似的运算符还有instanceof,该运算符用于判断某个变量是否为指定类的实例,如果是,则返回true,否则返回false。

例子
    // 定义一个数组
    var a = [4, 5];
    // 判断a变量是否为Array的实例
    alert(a instanceof Array);
    // 判断a变量是否为Object的实例
    alert(a instanceof Object);

注:本博客内容节选自李刚编著的疯狂HTML 5/CSS 3/JavaScript讲义 ,详细内容请参阅书籍。