考虑以下Javascript:
function getType(obj){
return(typeof(obj))
}
alert(typeof(obj)) //alerts "undefined" correctly
alert(getType(obj)) //throws an error: ReferenceError: obj is not defined
为什么会发生这种情况?有没有解决方法?我正在尝试编写一个检查变量是否存在的函数。
答案 0 :(得分:6)
问题与typeof无关。问题是你不能将未定义的变量传递给函数。
function doNothing(obj){
}
doNothing(obj);
此代码也会导致错误:Uncaught ReferenceError: obj is not defined
因此,在函数内部编写的代码并不重要,因为它不会被调用。错误发生在函数调用之前。
typeof
是一个运算符,而不是一个函数。
这就是为什么它的行为方式与函数不同。
答案 1 :(得分:4)
typeof
是一个运算符,而不是一个函数,因此具有函数不能具有的幂。没有办法做你想做的事。
答案 2 :(得分:3)
尝试传递未定义的对象时,您的函数会失败。您无法封装typeof()
函数。好吧,你可以,但是当传递未定义的对象时它总会抛出错误。