JavaScript 运算符和表达式

来源:互联网 发布:linux crontab 服务 编辑:程序博客网 时间:2024/05/20 05:26

  JavaScript运算符可以参见《JavaScript权威指南》第71页(电子版第85页)
  需要注意的是,JavaScript能在可能的情况下,将表达式转换为适当的类型,如:"3"*"5",会得到15,而不是"15"; "1"+0产生字符串"10"等。 

  JavaScript的相等运算符包括相等运算符(==)和等同运算符(===)。===运算符,采用严格的同一性定义检测两个运算数是否完全相同;而==运算符,采用比较宽松的同一性定义检测两个运算数是否相等。
  在比较数字、字符和布尔值时使用的都是值。在这种情况下==和===将检测这两个值是否相同,当且仅当这两个变量存放的值完全等同时,它们才相等或等同。
  在比较对象、数组和函数时使用的是引用。在这种情况下,只有两个变量引用的是同一个对象时,它们才是相等的。但两个不同的数组决不相等,即使存放的元素完全相同。如果要检测不同对象的属性或不同数组的元素是否相等,就必须分别检测每个属性或元素的相等性或等同性。
  比较时需要注意,===运算符,如果两个值类型不同,它们就不同;==运算符,如果两个值类型不同,它们仍可能相等。如:如果两个值都是null或都是undefined,===认为等同,如果一个值时null,一个值时undefined,==认为相等;如果一个值时数字,一个是字符串,==会把字符串转换为数字,再比较;如果一个值为true或false,==把它们分别转换为1和0,再比较;如果一个值是对象,一个值是数字或字符串,==用对象的toString()方法或valueOf()方法将对象转换成原始类型的值,再比较。
  JavaScript还提供了与==和===相对的不等运算符(!=)和布等同运算符(!==)。

  在JavaScript中比较运算符(<,>,<=,>=)的运算数可以是任意类型的,不是数字或字符串类型的运算数将被转换成数字或字符串再比较。字符串的比较时采用每个字符串中的字符在Unicode编码中的数值,逐个比较。

  in运算符:in运算符要求其左边的运算数是一个字符串,右边是一个对象或数组,如果左边的值是右边值得一个属性名,返回true。如:
     var point = {x:1,y:1};
     var has_x = "x" in point;     //true
     var has_z = "z" in point;     //false
     var ts = "tostring" in point     //true 继承属性

  instanceOf运算符:instanceOf运算符要求其左边运算数是一个对象,右边是个对象类的名字。检测左边对象是否是右边类的一个实例。

  在对字符串进行运算时,注意以下几个例子:
     1+2        //3
     "1" + "2"      //"12"
     "1" + 2       //"12"字符串连接 *
     11<3        //false数字比较
     "11" < "3"     //true字符串比较]
     "11" < 3      //true数字比较   *
     s = 1+2+" ok "   //"3 ok "
     s = "ok "+1+2   //"ok 12"

  对于JavaScript中的逻辑运算符,与(&&)和或(||)要注意它们左边的值可能给右边带来的副作用的影响(同Java);而非!对任何值做两次运算(!!x)都返回一个布尔值。

  因为位运算符用于低级的二进制数操作,在JavaScript程序中不常用,不做详细介绍,可参见《JavaScript权威指南》第87页(电子版101页)。

  条件运算符(expression?statement1:statement2):当布尔条件expression为true,执行statement1,expression为false,执行statement2。

  typeof运算符:typeof运算符是一个一元运算符,如,typeof i或typeof(i)都可以,它返回运算数类型。

  new运算符:创建新实例。

  delete运算符:delete是一个一元运算符,它将删除运算数所指定的对象的属性、数组元素或变量。删除成功返回true,否则返回false。并不是所有的属性和变量都可以被删除,某些内部的核心属性和客户端属性不能删除,用var语句声明的变量也不能被删除。

  void运算符:void运算符是一元运算符,可以出现在任何类型的操作数之前。它总是舍弃运算数的值,返回undefined。多用在javascript:URL中。如:
 <a href="javascript:void window.open();">Open new Window</a>
  void的另一个用途是专门生成undefined值,由undefined在javascript1.5中实现,void 0的使用是在考虑向后兼容性。