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