1 回答
TA贡献1862条经验 获得超6个赞
您需要一种方法来设置返回函数的状态。一种方法是将您捕获的值包含在指示方向的闭包中。然后您可以在函数中进行操作。例如:
function rotater (str){
let dir = 1 // flag captured in closure
return function (num){
if (num == str.length) {
dir *= -1 // manipulate it where appropriate
}
我将标志设置为正数或负数 1,因为这样使用起来非常方便slice()(可以很好地处理负数),而不是使用以下内容进行拆分和循环:
function rotater (str){
let dir = 1
return function (num){
if (num == str.length) {
dir *= -1
return str
}
return str.slice(dir * num) + str.slice(0, dir * num)
}
}
const rotate = rotater('helloWORLD');
console.log(rotate(1))
console.log(rotate(10))
console.log(rotate(1)) // now reversed DhelloWORL
console.log(rotate(6))
rotate(10)
console.log(rotate(1)) // back to forward elloWORLDh
添加回答
举报