Fork me on GitHub

水平遍历和嵌套递归

程序中存在着一些有意思的逻辑,比如多层嵌套可以用递归遍历,比如同层的if else可以用数组遍历。

下面举例说明,多层嵌套的if else想要递归遍历需要写成下面的形式,以及用特定形式的递归遍历:

多层嵌套的if else转写成的函数

 let p1 = false,
        p2 = true,
        p3 = false;
    let test = function() {
        if (p1) {
            return '终止1';
        } else {
            return function() {
                if (p2) {
                    return '终止2'
                } else {
                    return function() {
                        if (p3) {
                            return '终止3'
                        }
                    }
                }
            }
        }
    }

  对多层嵌套的遍历:

function yunxing1() {
        while (test()) {
            test = test()
            if (typeof test === 'string') {
                alert(test)
                return '终止'
            }
        }
    }
    yunxing1()

  同层多个if else改写的函数以及遍历方法

let i = 1,
        a = 2,
        b = 3;
    function simpleVlidate() {
        let varr = [];
        varr.push(() => {
            if (i === 1) {
                return '不能等于1'
            }
        })
        varr.push(() => {
            if (a === 2) {
                return '不能等于2'
            }
        })
        varr.push(() => {
            if (b === 3) {
                return '不能等于3'
            }
        })
        return varr
    }
    let arrs = simpleVlidate();

    function yunxing() {
        for (let i = 0, fn; fn = arrs[i++];) {
            if (fn()) {
                alert(fn())
                return;
            }
        }
        console.log(343433333333)
    }

    yunxing();

  以上,总结的有意思的逻辑,也是可以简化代码的方法。这样的逻辑还有很多………………

posted @ 2019-04-22 21:20  我站在山顶上  阅读(278)  评论(0编辑  收藏  举报