将未定义的参数传递给函数 - 检查变量是否存在

时间:2013-06-05 14:35:58

标签: javascript

考虑以下Javascript:

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

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

3 个答案:

答案 0 :(得分:6)

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

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

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

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

答案 1 :(得分:4)

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

答案 2 :(得分:3)

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