这样写 alert( typeof obj === "undefined" ); 
没有问题,弹出提示,结果是 true-----------------------------------------------------------
但是换个方式test(obj);function test(p){
      alert( typeof p === "undefined" );   
}结果是抛出异常 obj is undefined -----------------------------------------------------------谁能解释下原因?

解决方案 »

  1.   

    你调用test(obj)的时候,把obj赋值给p,obj没有值,所以会报obj is not defined。就好像
    a = 10 ;
    a = b ;//这里会报b is not defined你可以直接调用test()不传参数,看一下结果是不是和你想要的。
      

  2.   

    xxx(??);这里??能随便写吗?关键点再这里  不再 typeof
      

  3.   

    typeof基本上是唯一一个可以对未声明的编辑进行操作的运算符,另外可以对未声明的变量进行赋值,但会自动声明为全局变量,其余的时候都不可以直接使用未声明变量的。你的第一种写法是正确的,因为typeof可以对未声明变量进行操作,而你的第二种用法把一个未声明的变量作为参数使用,所以就抛异常了。
      

  4.   

    这个问题只能说明typeof的强大,并没有体现有冲突存在,因为typeof本身就不是方法而是运算符