function match(string) {
let state = start // 保存函数签名
for (let c of string) {
state = state(c)
}
return state === end
}
function start (c) {
if (c === 'a') {
return findA
} else {
console.log('return start', start)
return start
}
}
function findA (c) {
if (c === 'b') {
return findB
} else {
return start(c)
}
}
function findB (c) {
if (c === 'c') {
return end
} else {
return start(c)
}
}
function end () {
return end
}
console.log('result:',match('0abc'))