题主是说在 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'))
function myWrite(str){ document.write(str+"<br/>") }function myFun(){ function mySum(x,y) { var z=x+yreturn z } var b=mySum(1,6) myWrite(b) }myFun()1.函数嵌套定义只能出现在函数,不能出现在选择语句或循环语句中;2.嵌套定义的函数只能在嵌套的函数中使用;如上 mySum函数只能在myFun函数调用;不能再其他函数中调用,如myWrite函数;也不能再myFun函数的其他顶层全局代码中调用.方法嵌套实际是要实现一种循环,是循环就有两个要素:一个是终止条件,一个是增量。
嵌套函数和普通函数有一点不同:
既然是嵌套函数,就是把自身当作值运用到函数体内。这就要求函数必须有一个返回值。就要用return语句。
function a(x){
if(x<=1)
return 1
else
return x*a(x-1)
}
//上述示例是一个嵌套函数,来确定一下循环要素:if(x<=1) return 1这是终止条件,当x<=1时终止,else return x*a(x-1)这是增量,每次嵌套调用函数a()时参数都会减1
function a(x){
if(x<=1)
return 1
else{
var m=1
for(var i=2i<=xi++){
m*=i
}
return m
}
}
//上述示例嵌套函数就是要实现这样的循环