gpt4 book ai didi

javascript - 检查未定义

转载 作者:行者123 更新时间:2023-12-03 23:28:01 25 4
gpt4 key购买 nike

我完全糊涂了。我知道这已被问过一百万次。我看过这样的问题:

Test if something is not undefined in JavaScript

现在的问题是在进行检查时我发现您可以做很多事情。

我需要检查对象是否为数组,为此我检查“长度”属性是否存在。现在我会使用哪一个?

 if (obj.length)

 if (obj.length === undefined)

 if (typeof obj.length === "undefined")

if (obj.length == null)

还是别的?

我明白 ===不做任何类型转换,if 语句只是想要一个“真实”或“虚假”值,意思是 obj.length如果长度为 0,将返回 false,但这不是我们想要的。我们现在想要它是否已定义。这就是为什么我要进行类型测试。但哪种方式最好?

这是我做的一些测试。 2、3 和 4 有效。

enter image description here

抱歉中间的内容。我是在该页面的控制台中执行此操作的。

最佳答案

简答:

if (obj instanceof Array) {
// obj is an array
}

或者,如果您不知道 obj 是否已定义:

if ((typeof obj !== "undefined") && (obj instanceof Array)) {
// obj is an array
}

讨论为什么你的不太正确:

如果 obj 未定义,

obj.anyProperty 将抛出一个 ReferenceError。这会影响您放置的所有四个东西。

if (obj.length) 将为空数组评估为 false,这不是您想要的。因为长度为 0(一个虚假的值),它会错误地不准确。如果另一个对象具有 length 属性,这也可能会出现问题。

if (obj.length === undefined)通常 工作,但它不受欢迎,因为 undefined 可以被重新定义。有人可能会通过编写 undefined = obj.length 来破坏您的代码。这也会造成假阴性; obj 可能碰巧有一个名为“length”的属性,它会错误地将其称为数组。

if (typeof obj.length === "undefined") 工作正常,但可以检测到与上述相同的漏报。

if (obj.length == null) 可以正常工作,但存在与上述相同的错误。在双等号 (==) 中,它匹配 nullundefined

关于javascript - 检查未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15423765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com