下划线的each和ES5 forEach的区别

问题描述 投票:0回答:2

我有

_.each(this.fields, function(field, idx) {

我想我可以把它改成

this.fields.forEach(function(field, idx) {

不破坏任何东西。

下划线的

each
和原生JS实现的
forEach
真的有区别吗?

javascript foreach underscore.js ecmascript-5
2个回答
3
投票

使用下划线或lodash等库,您可以轻松编写代码,而不必担心不同浏览器的兼容性问题。

您获得的第二个优势是

_.each
也可以迭代
object

_.each([1, 2, 3], alert);
=> alerts each number in turn...

_.each({one: 1, two: 2, three: 3}, alert);
=> alerts each number value in turn...

示例来自 http://underscorejs.org/#each


0
投票

另一点不经常指定的是 _.each 处理

null
undefined
情况,其中
forEach
会抛出错误。

但是,对于这种操作,我强烈建议使用原生的

forEach
。这样,您的技能就不会依赖于图书馆。成为 JS 专家比成为下划线专家更有价值(当然也有例外)。

还有一点,这里是使用原生

null
处理
undefined
forEach
的语法:

array?.forEach?.(element => {
    console.log(element);
});

如果有必要,就这样做。因为这种语法在代码中说了很多,无论有没有问号,它的意思是“我 100% 确定我这里有一个数组”或“我不确定它是否是一个数组”。如果你有 99.99% 的把握,请使用问号。

© www.soinside.com 2019 - 2024. All rights reserved.