JS如何解决多层嵌套

JavaScript07

JS如何解决多层嵌套,第1张

4位字符串,共有A₂₆⁴种排列。

提供递归的思路:

var str = 'a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z', arr=str.split(','), strA=[]

var PermutN=function(n,m){//生成排列数索引 (从n个数中选择m个)

var t=[],ms=[],mstr

if(n==1){

if(m==0){t=[]}

if(m==1){t=[0]}

return t

}

if(m==0){

return []

}

if(m==1){

return 自然序列数组

}

for(var i=0i<ni++){

var s=PermutN(n-1,m-1)

t.push(对s进行拼接)

}

return t

}

var P=PermutN(26,4)

for(var i=0i<P.lengthi++){

var Pi=P[i],ps=''

for(var j=0j<4j++){

ps+=arr[j]

}

strA.push(ps)

}

return strA

不可以,因为js文件的后缀名为js,而php要求后缀名为php,所以冲突,不可以如果非要这么做,那么可以修改服务器(例如apache)的配置,使得对js文件也进行扫描解释,但是这样做会增加服务器的压力

题主是说在 run 外部调用 a、b、c?

那是不可能的,使用嵌套函数的目的就是为了让外部无法调用,以达到封装性的目的。

可以使用折衷的办法:

function run(obj){

    function a(){

        return '我不爱你'

    }

    function b(){

        return '我爱你'

    }

    function c(){

        return '我只喜欢你'

    }

    

    switch(obj){

        case 'a':

            return a()

            break

        case 'b':

            return b()

            break

        case 'c':

            return c()

            break 

    }

    return null

}

使用时:

alert(run('a'))

alert(run('b'))

alert(run('c'))