递归用途

112 阅读1分钟
        // 普通求和
        let total = 0
        for (let i = 0; i < 11; i++) {
            total += i
        }
        console.log(total);

        // 递归求和
        function calc(val) {
            if (val === 1) return 1
            return val + arguments.callee(val - 1)// arguments.callee等于函数本身
        }
        console.log(calc(10));
<body>
    <div class="con"></div>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
    <script>
        let arr = [
            {
                name: 'a',
                children: [
                    {
                        name: 'a-1',
                        children: [
                            {
                                name: 'a-1-1',
                                children: [
                                    {
                                        name: 'a-1-1-1'
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        name: 'a-2',
                        children: [
                            {
                                name: 'a-2-1'
                            }
                        ]
                    }
                ]
            },
            {
                name: 'b',
                children: [
                    {
                        name: 'b-1',
                        children: [
                            {
                                name: 'b-1-1',
                            }
                        ]
                    }
                ]
            },
            {
                name: 'c',
                children: [
                    {
                        name: 'c-1'
                    }
                ]
            }
        ]
        
        // 递归遍历添加
        function createMenu(data, con) {
            let ul = $('<ul/>')
            data.forEach(item => {
                let li = $('<li/>').text(item.name)
                if (item.children)
                    arguments.callee(item.children, li)
                ul.append(li)
            })
            con.append(ul)
        }

        createMenu(arr, $('.con'))
    </script>
</body>