0

在 JavaScript 中,如果对象或函数的类型未定义,有没有办法显示消息或返回 false?似乎如果某个对象或函数不存在,则无法在屏幕上显示错误消息,而是在 Web 控制台中显示错误。

4

4 回答 4

3

这应该有助于:

if (typeof foo === "undefined") {
    // foo is undefined
}

或者(参见Otto 的回答),您也可以使用:

if (foo === void(0)) {
    // foo is undefined
}

您不应该使用if (foo === undefined)因为(正如Alnitak 指出的那样),全局属性undefined在某些浏览器中可能具有非默认值(从 JavaScript 1.8.5-Firefox 4 开始,它是只读属性)。

于 2012-10-29T13:59:17.797 回答
1

运算符将为您提供变量的类型,如果未定义变量typeof,则为您提供字符串。"undefined"

if (typeof myvar === 'undefined') {
    // it's not defined
}

或者,如果你想要一个布尔值:

var itsDefined = (typeof myvar !== 'undefined');

这名义上比测试更安全:

if (var === undefined)

因为在某些浏览器上undefined可能会被覆盖。

于 2012-10-29T13:59:26.623 回答
1

(强制性回答,包括过度杀伤第三方库)

下划线.js _.isUndefined()

有趣的是,它使用的方法与此处提供的其他答案略有不同:

_.isUndefined = function(obj) {
    return obj === void 0;
  };
)
于 2012-10-29T14:04:10.550 回答
0

在访问变量的任何方法或孙属性之前,您应该检查它是否使用typeof检查 ( typeof x==="undefined") 或 try catch 定义:

try{
    x.method();
}catch(e){
    /*You could check the error message to see if the exception was thrown because x is undefined.*/
}
于 2012-10-29T14:01:52.703 回答