Sam*_*lle 37 javascript foreach ecmascript-5
ECMAScript 5 array.forEach(callback[, thisArg])在迭代数组上非常方便,并且具有许多优于语法的优点:
有没有理由不object.forEach替换for(var key in object)?
当然,我们可以使用JavaScript实现,如_.each或$ .each,但这些都是性能杀手.
Ale*_*yne 77
嗯,这很容易装配自己.为什么进一步污染原型?
Object.keys(obj).forEach(function(key) {
var value = obj[key];
});
Run Code Online (Sandbox Code Playgroud)
我认为一个重要原因是想要避免添加内置属性的权力Object. Objects是Javascript中所有内容的构建块,但也是该语言中的通用键/值存储.添加新属性Object会与您的Javascript程序可能想要使用的属性名称冲突.所以添加内置名称Object是非常谨慎的.
数组由整数索引,因此没有此问题.
这也是我们为什么Object.keys(obj)而不是简单的原因obj.keys.污染Object构造函数,因为它通常不是什么大问题,但只留下实例.
.forEach 确实只是为了迭代而创建变量......不是你自己创建的变量.
如果你正在使用垫片,那么它们在闭包中是JS变量,否则它们很可能是在C++中,或者是浏览器的本机实现.
ES6正在逐渐for ... of通过它传递的任何内容.
ES6也使用let而不是使用块级变量(而不是函数作用域)var
您将能够将迭代器添加到ES6中的特定类型的对象(即:您构建的对象以支持迭代器).
但问题在于,ES5旨在保留ES3的大多数语法(很少有新关键字,并且在常规使用中没有新关键字).
大多数附加功能必须是方法调用(通常是原型).
考虑到自ES3推出以来JS已经有多少使用,数组需要大量的工作.
对象不需要.map()/ .reduce()能力,除非你正在构建非常具体的对象,在这种情况下,你自己实现这些对象.
| 归档时间: |
|
| 查看次数: |
40861 次 |
| 最近记录: |