JavaScript高级程序设计里面说
typeof会返回5个值Undefined、Null、Boolean、Number和String

function a(){}
alert(typeof a);
这里返回的是function
为什么没有说呢

解决方案 »

  1.   

    JScript   typeof 运算符
    请参阅
    运算符优先级 | 运算符总结
    要求
    版本 1
    返回一个用来表示表达式的数据类型的字符串。typeof[()expression[]] ;
    expression 参数是需要查找类型信息的任意表达式。说明
    typeof 运算符把类型信息当作字符串返回。typeof 返回值有六种可能:"number"、"string"、"boolean"、"object"、"function" 和 "undefined"。typeof 语法中的圆括号是可选项。要求
    版本 1
      

  2.   

    难道JavaScript高级程序设计里面说漏了?
      

  3.   


    里面说的是对变量或值调用function是对象把
      

  4.   

    typeof运算符的返回值:
    "undefined",如果变量是Undefined型的。
    "boolean",如果变量是Boolean型的。
    "number",如果变量是Number型的。
    "string",如果变量是String型的。
    "object",如果变量是一种引用类型或Null类型的。
      

  5.   

    typeof 没有引用其值所以就没有出错。。

    ==是引用左边的值和右边的值做比较。。
    左边为初始化。当然就错啦。
      

  6.   

    ECMAScript的解释程序遇到未声明过的标识符时,用该变量名创建一个全局变量,并将其初始化为指定的值。书上是这么说的var oTemp;
    alert(oTemp == undefined);
    oTemp1 = 11;
    alert(oTemp1 == undefined);
    oTemp2;
    alert(oTemp2 == undefined);
    这里前面两个都可以
    第三个就不可以
    那是不是一定要有"指定的值"或者用var才能定义呢

    oTemp2;
    这个算是什么东西了呢
    完全没用的东西?
      

  7.   

    为什么oTemp1;
    var oTemp;
    alert(oTemp == undefined);
    oTemp1 = 11;
    alert(oTemp1 == undefined);
    这样会出错
    会说oTemp1;未定义oTemp;
    var oTemp;
    alert(oTemp == undefined);
    oTemp1 = 11;
    alert(oTemp1 == undefined);
    这样就没有问题为什么呢
    这两种定义的方法又有什么差别
      

  8.   

    oTemp1;
    你这样写和。。
    wc = oTemp1;
    不是一样的么?
    不还是要引用oTemp1的值么?

    var oTemp1;
    则是声明变量。。所以没有引用起值
      

  9.   

    楼上的不明白我问什么
    不过我已经弄明白了原来如果用
    var oTemp1;
    来声明变量script会把他放到程序运行之前来声明
    看看这个例子
    oTemp1;
    alert(typeof oTemp1);
    var oTemp1;
    其实真正的执行顺序是这样的
    var oTemp1;
    oTemp1;
    alert(typeof oTemp1);
    所以不会出错而
    oTemp1;
    oTemp1 = 11;
    alert(oTemp1 == undefined);
    这里出错其实跟后面两行没关系
    因为程序运行到oTemp1;这一行就已经出错了因为没有声明oTemp1而
    oTemp1 = 11;
    不会出错就是书上说的那样(估计有“指定的值”是“用该变量名创建一个全局变量”的必要条件)这样所有问题都可以解答了
      

  10.   

    从这里我觉得 typeof 确实特别
    因为未声明的变量进行任何操作都会出错
    但就除了 typeof 运算 依然返回undefined 而没有报错
    虽然是没有报错 但还是不能用在其他运算中
    例如
    alert(typeof oTemp1);
    alert(undefined == oTemp1);
    第二行就会报错
    说明oTemp1在typeof运算中没有出错
    但也没有被声明还有就是
    alert(a);
    var a=1;
    这里返回的是undefined
    那我估计实际的执行顺序是
    var a
    alert(a);
    a=1;
    对于var a=1;这种形式的声明
    声明部分提前了
    但赋值部分还是在原来的位置
      

  11.   

    估计这里可能误导了很多人以为
    alert(a);
    var a=1;
    这里的undefined是未声明的undefined而其实是未初始化的undefined
    当然这些都是我推论没错才有的结论还要查查资料先还有的是
    alert(a);
    a=1;
    这样alert(a);还是会出错
    那我估计程序执行的顺序是
    alert(a);
    var a;
    a=1;
    这种方式的声明不会被提前执行最后结论是var这种程序执行顺序跟function是一致的