gpt4 book ai didi

javascript - 更好地替代对嵌套 dom 对象属性的 typeof 进行多次检查

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

我经常发现,为了避免在 dom 内容上出现未定义的错误,我必须这样做:

if("undefined" != typeof parent 
&& "undefined" != typeof parent.main
&& "undefined" != typeof parent.main.location){
// Act on a current iframe page from that page's parent location
}

否则,在处理如此重度嵌套的 dom 对象时,可能会出现未定义的错误。有没有更简单的方法来检查这些嵌套对象属性而不破坏所有内容?

最佳答案

您不需要(在这种情况下不应该)对您的支票如此具体。

只需这样做:

if(parent && parent.main && parent.main.location) {

null 值上查找属性时,您的原始代码仍然会失败。这会以更短的方式处理这种情况。

如果需要,您可以将最后一次检查更改为更具体,但之前的检查只需要进行“真实”测试,因为您最终只是检查一个对象。

除此之外,您可以创建一个函数来稍微缩短它。是否值得,由您决定。

function getNested(obj) {
for (var i = 1; obj && i < arguments.length; ++i) {
obj = obj[arguments[i]]
}
return obj;
}

getNested(parent, "main", "location");

另一种选择是这样的:

if(((parent || {}).main || {}).location) {

如果返回了错误的值,|| {} 将替换一个对象,避免错误。

关于javascript - 更好地替代对嵌套 dom 对象属性的 typeof 进行多次检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20871709/

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