如果我不知道变量是否存在,如何将变量与未定义进行比较?

IT技术 javascript undefined
2021-02-27 22:40:26

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

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

有没有不使用try- 的方法catch

5个回答

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

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

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

obj !== undefined现在就可以使用undefined曾经是可变的,就像undefined = 1234会导致有趣的结果一样。但是在 Ecmascript 5 之后,它不再是可写的,所以我们可以使用更简单的版本。codereadability.com/how-to-check-for-undefined-in-javascript
2021-04-20 22:40:26
@Raveren 你不需要类型强制比较,双方都已经是字符串并且类型推断不会发生
2021-04-29 22:40:26
请注意,obj可能是nullfalse,在这种情况下,我的猜测是您也不想执行此类代码。当然也有例外和特殊情况。null, false,undefined都是“假”值,它们可以很容易地评估如下:if (obj) { ... }
2021-05-03 22:40:26
做到这一点if(typeof obj !== "undefined") {},它是完美的(注意第二个等号)
2021-05-05 22:40:26
什么是套路?为什么不只做像 Timmys 回答那样的直接比较?
2021-05-08 22:40:26
if (obj === undefined)
{
    // Create obj
}

如果您正在进行大量的 javascript 编程,您应该养成使用的习惯===以及!==何时进行特定类型的检查。

此外,如果您打算使用大量的 javascript,我建议通过 JSLint http://www.jslint.com运行代码,起初它可能看起来有点严厉,但 JSLint 警告您的大部分内容最终都会出现回来咬你。

不起作用,Makram 的typeof解决方案有效。
2021-04-26 22:40:26
从 ECMA Script 5 (2009) 开始,'undefined' 是一个常量,不需要使用 typeof。这应该是公认的答案。
2021-04-28 22:40:26
@JesseDhillon - “null == undefined”是真的。“null === undefined”不是。
2021-05-03 22:40:26
什么是一个情况的事情是不是undefined== undefined
2021-05-12 22:40:26
难道我做错了什么?imgur.com/a/UyWDKd8
2021-05-19 22:40:26
if (document.getElementById('theElement')) // do whatever after this

对于抛出错误的未定义事物,测试父对象的属性名称而不仅仅是变量名称 - 所以而不是:

if (blah) ...

做:

if (window.blah) ...

!undefined 在 javascript 中是 true,所以如果你想知道你的变量或对象是否未定义并想采取行动,你可以这样做:

if(<object or variable>) {
     //take actions if object is not undefined
} else {
     //take actions if object is undefined
}
你已经编辑了最后一个非常酷,以前从未见过,谢谢:)
2021-04-22 22:40:26
谢谢你的时间,但是,在这种情况下,如果你尝试比较一个未声明的变量,你会得到一个错误提示,说你没有声明变量......所以不可能比较它......这就是你需要的原因以字符串格式转换变量的类型以成功比较它示例 if( type of myundeclaredvarible == "undefined") // 做一些最好的事情 nahum @Rahul Panday
2021-05-10 22:40:26
if (!obj) {
    // object (not class!) doesn't exist yet
}
else ...
-1. 问题包括you can check variable == undefined!obj甚至比obj == undefined. 比较!NaN(真)与NaN == undefined(假)
2021-04-21 22:40:26
'I have a class which is created when the user clicks a button. Before this the class is undefined, it doesn't exist anywhere so how can I compare it? ——那是个问题。
2021-04-22 22:40:26
常规对象不能是 justfalse0它应该包含成对的key -> value、或空的、未定义的或空的。
2021-04-23 22:40:26
obj 很可能存在,但为 false 或 0。
2021-04-30 22:40:26
但这不是问题。仅仅因为你调用了一个变量 obj 它可能仍然是任何恕我直言。
2021-05-20 22:40:26