javascript - Symbol.Iterator - 传递参数

标签 javascript node.js ecmascript-6

我的 JavaScript 代码有问题。

如何使该段代码参数化?我的意思是将 10 更改为我可以作为参数传递的变量。

function createGenerator() {
var _state = 0;
return {
    next() {
        if (_state < 10) {
            return { value: _state++ };
        } else {
            return { done: true };
        }
    }
  }
}
var iterable = {
   [Symbol.iterator] : createGenerator
};
for (var f of iterable) {
   console.log(f)
}

最佳答案

您可以将其作为参数传递,然后绑定(bind)您的createGenerator函数。

function createGenerator(num) {
var _state = 0;
return {
    next() {
        if (_state < num) {
            return { value: _state++ };
        } else {
            return { done: true };
        }
    }
  }
}
var iterable = {
   [Symbol.iterator] : createGenerator.bind(this,10)
};
for (var f of iterable) {
   console.log(f)
}

关于javascript - Symbol.Iterator - 传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47191193/

相关文章:

javascript - 使用类型或值标签自动单击

node.js - WebStorm 7 - Yeoman Angular 缺少源映射 `Failed to load resource: the server responded with a status of 404 (Not Found)`

javascript - 稍后在 Promise 上添加子句

node.js - 对话流 : throw new Error (`@grpc/grpc-js only works on Node ${supportedNodeVersions}` )

javascript - 无法找出 MYSQL 查询来获得我想要的结果

javascript - RxJS 将数组与另一个可观察量映射并返回数组

javascript - 在 'Map' 上使用映射函数更改值

javascript - 下载 Facebook 相册的脚本

javascript - 在元素属性中使用用户输入是否安全?

javascript - 在 VScode 中,如何从导入文件的行打开文件?