gpt4 book ai didi

javascript - 确定对象的有效性

转载 作者:行者123 更新时间:2023-11-29 16:13:52 24 4
gpt4 key购买 nike

上下文:

我试图确保传递给函数的对象在使用之前是有效的。我想知道这两种方法之间是否有任何区别,一种在语法上比另一种更冗长。如果现代用户代理(如 Chrome、IE、FF 等)使用的所有 JavaScript 引擎的功能和行为都相同,我宁愿使用更简单的版本。如果没有,我想使用安全赌注,这样我的代码就可以按照我的预期运行,而不管 JavaScript 引擎的实现如何。

问题:

给定以下函数,注释部分表示有两条语句。
无论 JS 引擎(或用户代理)如何,语句 1 都会产生与语句 2 相同的结果吗?为什么或为什么不?

function f(obj) {
if(obj) { // statement 1
console.log('obj is valid');
}
if(obj !== null && obj!==undefined) { // statement 2
console.log('obj is invalid');
}
}

最佳答案

不,它们是不同的。

if (obj) 测试 truthy 值。在 JavaScript 中,除了 ""0falseNaNnull 之外的一切都是真实的code> 和 undefined (可能还有一些我忘记了......)

但是,如果其中一个虚假值是您可以接受的值,例如零或 false 怎么办? quantity 为零是一个完全合法的值,对于 isTotallyLame 来说,false 也是如此。因此,您需要一个允许这些值通过的测试。您需要测试是否存在

if (obj!==null && obj!==undefined) 测试存在。只有 nullundefined 将无法通过测试。这意味着空字符串 ""、零 0 甚至 false 都是有效值,因为它们是一个集合值。


但是,正如@Tim 指出的那样,存在的首选标准测试如下所示:

if (typeof obj !== "undefined" && obj !== null)

关于javascript - 确定对象的有效性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20667208/

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