如果我不知道它们是否存在,如何将变量与undefined进行比较?

ncu*_*ica 93 javascript undefined

在JavaScript中,您可以声明一个变量,如果是undefined,您可以检查variable == undefined; 我知道,但是你怎么能比较一个你还不知道的值,如果它在记忆中呢?

例如,我有一个在用户单击按钮时创建的类.在此之前,该类是未定义的 - 它在任何地方都不存在; 我怎么比较呢?

有没有办法没有使用try- catch

Mak*_*leh 180

最好的方法是检查类型,因为undefined/ null/ false在JS中是一件棘手的事情.所以:

if(typeof obj !== "undefined") {
    // obj is a valid variable, do something here.
}
Run Code Online (Sandbox Code Playgroud)

请注意,typeof始终返回一个字符串,如果该变量根本不存在,则不会生成错误.

  • 使`if(typeof obj!=="undefined"){}`并且它是完美的(注意第二个等号) (13认同)
  • 你现在可以使用`obj!== undefined`.`undefined`曾经是可变的,比如`undefined = 1234`会导致有趣的结果.但是在Ecmascript 5之后,它不再可写了,所以我们可以使用更简单的版本.http://www.codereadability.com/how-to-check-for-undefined-in-javascript/ (8认同)
  • 什么是诀窍?为什么不像Timmys那样进行直接比较呢? (2认同)
  • @Raveren你不需要类型强制比较,两方都已经是字符串,并且不会发生类型推断 (2认同)

小智 50

if (obj === undefined)
{
    // Create obj
}
Run Code Online (Sandbox Code Playgroud)

如果你正在做大量的javascript编程,你应该养成使用===和!==的习惯,当你想进行类型特定的检查时.

此外,如果你要做相当数量的javascript,我建议通过JSLint运行代码http://www.jslint.com一开始看起来有点严厉,但JSLint警告你的大多数事情最终会来回来咬你

  • 自ECMA Script 5(2009)以来,'undefined'是常量,并且不需要使用typeof.这应该是公认的答案. (4认同)
  • @JesseDhillon - "null == undefined"是真的."null === undefined"不是. (3认同)
  • 在什么情况下,非“未定义”的事物会“==未定义”? (2认同)
  • 难道我做错了什么?https://imgur.com/a/UyWDKd8 (2认同)