试图重构一个简单的函数:
// arr - array of objects with functions
function eventNotify(arr, event) {
for (var i = 0; i < arr.length; i++) {
var a = arr[i];
if (typeof a[event] === 'function') {
a[event]();
}
}
}
将它转化为这个样子:
function eventNotify(arr, event) {
for (var i = 0; i < arr.length; i++) {
var a = arr[i][event];
if (typeof a === 'function') {
a();
}
}
}
我无法理解为什么这样的更改会破坏我的所有测试。
第二种实现与第一种有何不同之处?
我甚至尝试分离索引的使用,以为可能会被视为三维数组:
var a = arr[i];
a = a[event];
但是,这没有任何区别。
请有人指出我在算法逻辑中到底改变了什么!现在我正在为此苦苦思索。
我正在Node.js 10.9下进行测试。
this
不会被设置。 - Pointythis
值) 是arr[i]
。在第二个示例中,它是全局对象。 - ibrahim mahrir