에서 listTodos()
기능, 나는 이유 / 방법을 알아낼 수 없습니다 i
에 대한 자리 표시 자 인수 todos.forEach
루프가 배열의 인덱스 번호를 뱉어. 나에게는 자리 표시 자 / 인수가 서로 다른 방식으로 지정되는 방법을 알 수 없기 때문에 두 자리 표시 자 / 인수가 동일한 작업을 수행하는 것 같습니다.
그래서 아래에서는 콘솔이 왜 기록하지 않는지 이해하지 못합니다 : "Buy New Turtle: Buy New Turtle"
, 반대로 : "0: Buy New Turtle"
.
todos.forEach(function(todo, i) {
console.log(i + ": " + todo);
다음은 전체 "Todo List"JS 코드입니다.
var todos = ["Buy New Turtle"];
var input = prompt("What would you like to do?");
while(input !== "quit") {
if(input === "list") {
listTodos();
}
else if(input === "new") {
addTodo();
}
else if(input === "delete") {
deleteTodo();
}
input = prompt("What would you like to do?");
}
console.log("OK YOU QUIT THE APP");
function listTodos() {
console.log("**********")
todos.forEach(function(todo, i) {
console.log(i + ": " + todo);
});
console.log("**********");
}
function addTodo() {
var newTodo = prompt("Enter new todo");
todos.push(newTodo);
console.log("Added Todo");
}
function deleteTodo() {
var index = prompt("Enter Index of Todo to Delete");
todos.splice(index, 1);
console.log("Deleted Todo");
}
그래서 .. 여기서 말이되는 건가요? 누군가 나를 위해 이것을 해결할 수 있습니까? 감사!
에 인수로 함수를 전달하고 있습니다 forEach
. 그런 forEach
다음 루프에서 배열을 반복하고 해당 함수를 호출하여 특정 인수를 해당 함수에 전달합니다. 전달되는 인수는 항상 ...
이를 더 명확하게 이해하려면 자체 기능 반복기를 구현하십시오.
Array.prototype.mySuperForEach = function(callback) {
for (var i = 0; i < this.length; i++) {
callback(this[i], i, this) // <---This is your function being invoked
}
};
["foo", "bar", "baz"].mySuperForEach(function(item, i, arr) {
console.log("%s: %d of %d", item, i, arr.length)
})
이것은의 완전한 준수 구현은 .forEach()
아니지만 무슨 일이 일어나고 있는지에 대한 기본적인 아이디어를 제공합니다. for
루프 내에서 콜백이 호출되고 원래 예제에서 관찰 한 인수가 전달됩니다.
을 확장하는 동안 그 결과 Array.prototype
를 완전히 이해 하지 않고이 작업을 수행해서는 안됩니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다