防止 ES9 中 Object 的 entries() 函数在非可迭代对象上抛出错误

防止 ES9 中 Object 的 entries() 函数在非可迭代对象上抛出错误

ES9 中新增的 Object 的 entries() 是一个很方便的函数,它可以将对象的键值对转化成可迭代的数组,便于我们对对象的处理和遍历。但是当我们在非可迭代的对象上使用 entries() 函数时,它会抛出错误:TypeError: Object.entries called on non-object。

这篇文章将介绍如何避免这个错误,并提供一些示例代码来帮助理解。

首先,我们需要知道 entries() 函数是在可迭代对象上定义的,如数组和 Map 对象。若我们要在非可迭代对象上使用该函数,我们可以通过以下方法进行容错处理:

1.使用第三方类库

有些第三方类库具有容错处理这种情况的方法,如 Lodash,Underscore 等,你可以使用它们里面的方法代替原生的 entries() 函数,可以确保代码在使用时不会抛出异常。示例代码如下:

2.使用 if 判断

我们可以使用 if 判断来检查对象是否可迭代。因为如果一个对象是可迭代对象,那么它就有 Symbol.iterator 属性。

3.使用自定义的容错处理函数

我们可以定义一个容错处理函数,当对象不可迭代时返回一个自定义的值,比如 null 或空数组。

总结

Object 的 entries() 函数在非可迭代对象上抛出错误是一个很常见的问题。我们可以使用第三方类库、if 判断语句或自定义容错处理函数来避免该错误。如果你的代码中可能会出现这种情况,请务必在编写代码时注意并进行容错处理。

希望本篇文章能对您有所帮助,并可以避免这种错误的产生。

参考资料

  1. http://2ality.com/2018/04/object-entries.html

  2. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65b4c0b2add4f0e0ffd9d82b