日期:2014-05-16  浏览次数:20363 次

javascript运算符小结
  typeof:单目类型运算符,放在一个运算数之前,这个运算数可以是任意类型,他的返回值是一个字符串,该字符串说明了运算数的类型。typeof运算符对数值、字符串或者布尔值分别返回"number"、"string"或"boolean”,对对象、数组和null返回"object",对函数、类和闭包它返回"function",如果运算数是未定义或者未赋初值的,他返回"undefined”。
  
引用

  当运算数是Number、String或Boolean这样的包装对象时,他返回"object",此外对Date和RegExp对象,也是返回"object",对于那些不属于javascript核心语言,而是由javascript嵌入环境提供的对象,typeof的返回值由实现决定,比如typeof(document)在IE中返回"object",在火狐下返回[HTMLDocuument]。
  由于typeof对所有对象和数组类型返回的都是"object",所以它只有在区别对象和原始类型时才有效,要真正区别一种对象和另一种对象的类型,必须使用其他的方法。

var c="3,t,2,sf";
document.writeln(typeof(c)=='string'?c.split(",")[0]:c);//结果为3

  in:该运算符要求左边是一个字符串,或者可以转换为字符串的类型;右边为一个对象或者数组,若左边的值为右边对象的属性名,则返回true。例如:
var point={"x":0,"y":3};//定义一个对象
var has_x="x" in point;//值为true
var has_y="y" in point;//值为true
var has_z="z" in point;//值为false
var has_toString="toString" in point;//toString为继承属性,值为true

引用
利用in运算符的这个特性,可以将一个对象作为集合来使用,对象的属性作为集合的元素。

  instanceof:该运算符要求左边为一个对象,右边为一个类的名字,若左边的对象是右边类的对象,或者右边类的派生类的对象,则返回false,否则返回true。若右边的运算符不是一个类,则抛出一个系统级别的异常。
  对象运算符:“.”和[]都是用来读取对象和数组的双目运算符,他们的第一个运算符都是对象或者数组,它们的区别是:“.”将第二个运算数作为对象的属性来读写,而[]将第二个运算数作为数组的下标来读写,前者要求第二个运算数必须是一个合法的标识符,而后者的第二个运算数可以是任意类型类的值,但是不能是未定义的标识符。
var a=new Object();
a.x=1;
alert(a["x"])//这两者是等价的

引用

  注意:在[]中,会对第二个运算符进行类型转换,转换规则同关系运算符基本相同;当[]的第二个运算数为一个对象时,会先调用该对象的toString方法来转换,如果失败,则调用valueOf()方法来转换,另外布尔值true和false总是被转换成字符串值"true"和"false",而不是0和1.

  void运算符:该运算符是一个一元运算符,他可以出现在任何操作数之前,作用是舍弃运算数的值,返回undefined作为表达式的值。这种运算符常用在客户端javascript:URL伪协议中,在这里可以计算表达式的值,而浏览器不会显示出这个值。
  这个运算符的另一个用途是专门生成undefined。