11

考虑以下 Javascript:

function getType(obj){
    return(typeof(obj))
}
alert(typeof(obj))  //alerts "undefined" correctly
alert(getType(obj))   //throws an error: ReferenceError: obj is not defined

为什么会发生这种情况?有什么解决方法吗?我正在尝试编写一个检查变量是否存在的函数。

4

3 回答 3

6

问题与 typeof 无关。问题是您不能将未定义的变量传递给函数。

function doNothing(obj){
}
doNothing(obj);

此代码也会导致错误: Uncaught ReferenceError: obj is not defined
因此,您在函数中编写的代码无关紧要,因为它不会被调用。错误发生在函数调用之前。

typeof是一个运算符,而不是一个函数。这就是为什么它的行为方式与函数不同。

于 2013-06-05T14:45:31.577 回答
4

typeof是一个操作符,而不是一个函数,因此具有函数不能具有的能力。没有办法做你想做的事。

于 2013-06-05T14:38:30.567 回答
3

一旦您尝试传递未定义的对象,您的函数就会失败。你不能封装typeof()函数。好吧,你可以,但是当传递未定义的对象时它总是会抛出错误。

于 2013-06-05T14:37:47.370 回答