如何用更好的版本替换Javascript的foreach?



我一直在Javascript中获取TypeError: Cannot read property 'forEach' of null,因为在document.querySelectorAll()调用后我没有检查null。

有没有一种方法可以在Javascriptnull对象上创建一个特殊的forEach(),并使其不执行任何操作,从而消除错误?或者,我们可以用.forEach2()替换我使用的forEach(),这样forEach2()就不会对null做任何事情吗?

例如:

var $ = s => document.querySelectorAll.bind(document)(s).length > 1 ? document.querySelectorAll.bind(document)(s) : document.querySelector.bind(document)(s);
$('FOOTER EM').forEach(function(el,i){
console.log(el);
});

如果FOOTER下没有EM,比如在运行时我有时会添加一些EM,那么上面的内容会给我带来一个错误。

有没有办法在Javascript null对象上创建一个特殊的forEach(),并使其不执行

不是一个特殊的函数,您可以为此使用可选的链接方法调用:

$('FOOTER EM')?.forEach(el => console.log(el));
//            ^

然而,最好不要让$函数返回null,而不是空数组:

const $ = s => document.querySelectorAll(s);
// or
// const $ = document.querySelectorAll.bind(document);
for (const el of $('FOOTER EM')) console.log(el);

最新更新