gpt4 book ai didi

javascript - 制作我自己的 ForEach() javascript - 元素未定义

转载 作者:搜寻专家 更新时间:2023-11-01 04:44:53 25 4
gpt4 key购买 nike

我正在用 javascript 自己实现 forEach,唯一的目的是更好地理解这门语言。更具体地说,临时目标是更好地理解回调。

这是我在卡住之前走了多远。

function myForEach(array, callback) {
for (let i = 0; i < this.length; i++) {
callback(array[i]);
}
}

function callback(element) {
console.log(element); //insert logic
}

const array = [2, 4, 6, 8, 10];
arr.myForEach(array, callback(element));

在节点中运行时出现以下错误:

ReferenceError: element is not defined
at Object.<anonymous> (C:\Users\Jonas\Desktop\FLEXBOX\test.js:54:31)
at Module._compile (module.js:653:30)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3)
at Function.Module.runMain (module.js:694:10)
at startup (bootstrap_node.js:204:16)
at bootstrap_node.js:625:3

我怀疑是因为当函数被调用时,回调函数中作为参数给出的元素没有被创建。这是有道理的,但是真正的 forEach 循环在调用时并没有传入创建的值吗?

arr.forEach((element /*does not exist yet?*/) => {
console.log(element);
});

我也尝试过使用 lambda 调用该方法,但也没有得到正确的结果。但是一个不同的错误

arr.myForEach(array, (element) => {
console.log(element);
});

然后它给出了错误:

TypeError: arr.myForEach is not a function
at Object.<anonymous> (C:\Users\Jonas\Desktop\FLEXBOX\test.js:58:5)
at Module._compile (module.js:653:30)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3)
at Function.Module.runMain (module.js:694:10)
at startup (bootstrap_node.js:204:16)
at bootstrap_node.js:625:3

最佳答案

这就是实现它的方法

    Array.prototype.myForEach = function(callback) {
for (let i = 0; i < this.length; i++) {
callback(this[i]);
}
};

function callback(element) {
console.log(element); //insert logic
}

var array = [2, 4, 6, 8, 10];
array.myForEach( callback);

错误 element not defined 是因为在最后一行你使用了 'callback(element)' ,在那一行 element is not defined

并且要能够调用像array.myForEach这样的数组方法,你必须将它附加到原型(prototype)上

注意:虽然不建议更改内置原型(prototype)。感谢大家的评论

关于javascript - 制作我自己的 ForEach() javascript - 元素未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52501745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com