SOURCE

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'))
console 命令行工具 X clear

                    
>
console