gpt4 book ai didi

Javascript "deep"检查定义

转载 作者:行者123 更新时间:2023-11-30 09:43:38 25 4
gpt4 key购买 nike

我可以发誓,曾几何时,我遇到了一些使用某些 js 库(也许是 lodash??)的代码来“深入”检查是否定义了某些内容。

例子:

someLib.isDefined(anObject.aNestedObject.anotherNestedObject);

(如果定义了 anotherNestedObject 则返回 true,但如果未定义 anObject 或 aNestedObject 则返回 false(并且不抛出异常)。

这完全是我梦到的,还是有一些众所周知的函数可以做到这一点?

最佳答案

正如我在评论中所写,我认为这是不可能的。
表达式 anObject.aNestedObject.anotherNestedObject 在调用 someLib.isDefined 函数之前被求值,因此在调用函数之前将抛出异常(如果 anObject 或 aNestedObject 不存在)有机会做任何事情。
也许如果你将它作为字符串传递:someLib.isDefined("anObject.aNestedObject.anotherNestedObjec‌ t")

但是,像这样检查很容易:

if (anObject && anObject.aNestedObject && anObject.aNestedObject.anotherNestedObject) {
...
}

或者自己实现一个函数,很简单:

function exists(obj: any, keys: string | string[]) {
if (typeof keys === "string") {
keys = keys.split(".");
}

return keys.every(key => {
if (!obj) {
return false;
}

obj = obj[key];
return true;
});
}

( code in playground )

关于Javascript "deep"检查定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39923662/

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