我正在使用node
编写ES6
项目,并使用babel cli编译为ES5
,但在ES6 for of
let parseParams = (obj)=> {
let string = ''
for (var [key,value] of obj) {
string += `/${key}/${value}`
}
console.log(`obj: ${string}`)
return string;
}
编译了js =>
for (var _iterator = params[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var _step$value = _slicedToArray(_step.value, 2);
var key = _step$value[0];
var value = _step$value[1];
string += '/' + key + '/' + value;
}
params[Symbol.iterator]
未定义
let params = {
key: 'value'
}
babel server.babel.js -o server.js
我该如何解决这个问题,谢谢。
答案 0 :(得分:1)
引用Difference between for...of and for...in
for of of 语法特定于集合,而不是所有对象。它将以这种方式迭代任何具有 [Symbol.iterator] 属性的集合的任何元素。
params
没有[Symbol.iterator]
属性,因此您无法在此处使用for ... of
循环。
将obj
转换为可迭代类型(例如Map
)
let params = new Map([['key', 'value']]);
或使用for ... in
循环:
for (let prop in obj) {
string += `/${prop}/${obj[prop]}`
}