typeof操作符也是一元操作符
其产生式(production)为:
UnaryExpression:typeof UnaryExpression
其求值过程如下:
1、先对右侧的一元表达式求值,将结果赋给val
2、 如果Type(val)是引用(Referecne),那么
a、如果IsUnresolvableReference(val) 是true ,返回"undefinded"
b、把GetValue(val)的结果赋给val
3、返回一个由Type(val)决定的字符串,相见下表
基本规律为:如果是typeof的目标是基本类型(undefinded,number,string,boolean),结果为这些基本类型,null,比较特殊,返回object,其他情况如果目标是object(可以理解为复合类型)且没有实现内部属性[[call]],则结果为object,如果实现了[[call]]],则结果为function.
参考:
1、ecma 262 edition 5.1----11.4.3 The typeof Operator
2、http://bonsaiden.github.com/JavaScript-Garden/zh/#types (javascript秘密花园)