【发布时间】:2022-11-18 02:43:36
【问题描述】:
我用 next() 方法创建了一个函数 squared() 。该函数的起始值为 n = 0。如果 n <= 5,则 next 方法应返回一个值和 false。每次我调用 next 时,它都应继续重复此过程。 我遇到的问题是,当我直接在控制台中调用 squared().next() 时,它只会继续为我提供第一个返回值。这意味着每次我调用它时它仍然从 0 开始计数。
但是当我将函数平方设置为这样的对象时: squaredIterator = squared(); 然后我称它为dis way: squaredIterator.next(); 它完美地工作并继续迭代直到 n > 5。
我不明白的是为什么只有当我从一个对象调用它时它才能正常工作。是不是 dat 对象有一个特殊的内存,他们保存 n 的最后一个值???
function squared() {
let n = 0;
return {
next() {
n++;
if(n <= 5) {
return {
value: n * n,
done: false
};
}
return {
value: undefined,
done: true
}
}
};
}
console.log(squared().next());
console.log(squared().next());
// value: 1, done: false
// value: 1, done: false
let squaredIterator = squared();
console.log(squaredIterator.next());
// value: 1, done: false
console.log(squaredIterator.next();
// value: 1, done: true
【问题讨论】:
标签: javascript arrays iterator