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

Passing undefined parameter to function - check if variable exists

本文关键字:检查 变量 是否 存在 参数 函数 未定义      更新时间:2023-09-26

考虑以下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()函数。你可以,但是当传递未定义的对象时,它总是会抛出错误。