在Javascript定义一个函数一般有如下三种方式:
- 函数关键字(function)语句:
function fnMethodName(x){alert(x);}
- 函数字面量(Function Literals):
var fnMethodName = function(x){alert(x);}
- Function()构造函数:
var fnMethodName = new Function('x','alert(x);')
内嵌函数示例:
<script>
function outerFn(firNum) ![](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0be121fa5b8988fbabbbc526af3b0fc0.gif)
{
var firNum=firNum;
firNum+=firNum;
function innerFn(secNum) ![](https://i-blog.csdnimg.cn/blog_migrate/3112b7b6526db5bc83e275260ae60525.gif)
{
firNum+=secNum;
return firNum;
}
return innerFn;
}
function test() ![](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0be121fa5b8988fbabbbc526af3b0fc0.gif)
{
var inNum = prompt('请输入一个数字',0);
while(isNaN(inNum)) ![](https://i-blog.csdnimg.cn/blog_migrate/3112b7b6526db5bc83e275260ae60525.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f2671b7f42ce505d9bf55a7a0ca257fb.gif)
{
inNum = prompt('请输入一个数字',0);
}
var outerRet = outerFn(parseInt(inNum));//call outer function
var lastRet = outerRet(parseInt(inNum));//call inner function
var userRet = prompt('请输入你认为正确的结果数字',0);
if(userRet==lastRet) ![](https://i-blog.csdnimg.cn/blog_migrate/3112b7b6526db5bc83e275260ae60525.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f2671b7f42ce505d9bf55a7a0ca257fb.gif)
{alert('恭喜你答对,你已经了解内嵌函数。');}
else ![](https://i-blog.csdnimg.cn/blog_migrate/3112b7b6526db5bc83e275260ae60525.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f2671b7f42ce505d9bf55a7a0ca257fb.gif)
{
alert('很遗憾,你答错,正确答案是:'+lastRet+',建议你了解内嵌函数。')
}
}
</script> //答案为30 闭包的概念: var tempFunction = (function(){ var **=**;//私有 var ××= function(){}//私有 return ( function(a,b,c) {//此处可以访问私有变量}) })(); 访问时使用:tempFunction(a,b,c)等同于调用function(a,b,c);