gpt4 book ai didi

javascript - 为什么不能使用 "!!document.getElementsByClassName && function(){return document.getElementsByClassName(obj)}"来简化代码

转载 作者:行者123 更新时间:2023-11-28 18:17:10 24 4
gpt4 key购买 nike

当我想检查 Explorer 是否存在 getElementsByClassName 时。我在代码下使用并且运行良好。

function getClass(obj) {
if (document.getElementsByClassName) {
return document.getElementsByClassName(obj)
}
}//work well

为了简化我的代码,我更改了代码并且工作也很好:

function getClass(obj) {
if (document.getElementsByClassName) return document.getElementsByClassName(obj);
}//work well
但是当我写这个时,它给出了一些错误

function getClass(obj) {
!!document.getElementsByClassName && (
return document.getElementsByClassName(obj));
}//work badly

Chrome 中出现错误。错误消息为“Uncaught SyntaxError: Unexpected token return”。为了解决这个错误,我更改了我的代码,请参阅下面:

function getClass(obj) {
!!document.getElementsByClassName && function() {
return document.getElementsByClassName(obj)
};
}

但是,当我使用getClass()时,控制台显示“未定义”。

对于上面的描述,

  1. 我不知道为什么“&&”用得那么辛苦?
  2. 我想知道是否有一些简化的代码?

最佳答案

这个问题:

function getClass(obj) {
!!document.getElementsByClassName && ( return document.getElementsByClassName(obj) );
}//work badly

您不能使用 return 作为逻辑表达式的一部分。

这个问题:

function getClass(obj) {
!!document.getElementsByClassName && function() {
return document.getElementsByClassName(obj)
};
}

您实际上并没有返回任何内容,您只是创建了一个未分配给任何内容的匿名函数,因此始终返回默认的undefined

您可以通过将 return 放在逻辑条件之前来执行类似的操作。

function getClass(obj) {
return !!document.getElementsByClassName && document.getElementsByClassName(obj);
}

老实说,这些短路技巧确实并不简单,我建议只使用选项 1 或者三元运算符。

function getClass(obj) {
return document.getElementsByClassName ?
document.getElementsByClassName(obj) :
null;
}

关于javascript - 为什么不能使用 "!!document.getElementsByClassName && function(){return document.getElementsByClassName(obj)}"来简化代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40625776/

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