程序中存在着一些有意思的邏輯,好比多層嵌套能夠用遞歸遍歷,好比同層的if else能夠用數組遍歷。數組
下面舉例說明,多層嵌套的if else想要遞歸遍歷須要寫成下面的形式,以及用特定形式的遞歸遍歷:函數
多層嵌套的if else轉寫成的函數blog
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改寫的函數以及遍歷方法string
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();
以上,總結的有意思的邏輯,也是能夠簡化代碼的方法。這樣的邏輯還有不少………………io