码迷,mamicode.com
首页 > 其他好文 > 详细

函数表达式

时间:2016-06-14 23:42:36      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:

一、定义函数的方式

1.函数声明:function abc(){}

2.函数表达式:var abc = function(){}

 

二、递归

1.通过自身的名字调用:但函数名赋值给其他函数时失效

技术分享
function factorial(num){
    if (num <= 1){
        return 1;
    } else {
        return num * factorial(num-1);
    }
}
View Code

2.通过arguments.callee调用:在严格模式下不能访问arguments.callee

技术分享
function factorial(num){
    if (num <= 1){
        return 1;
    } else {
        return num * arguments.callee(num-1);
    }
}
View Code

3.创建一个f()函数

技术分享
var factorial = (function f(num) {
    if (num <= 1){
        return 1;
    } else {
        return num * f(num-1);
    }
})
View Code

 

三、闭包

1.活动对象与变量对象

以function compare(value1, value2){}为例

全局变量对象为compare;活动对象为arguments、value1、value2;此时的活动对象也叫局部变量对象。

 

2.闭包的理解:

function a(value) {
    return function(value1, value2) {
        return 1;
    }
}
var abc = a();

abc为a函数的中的匿名函数,存在于全局变量中,则a的活动对象不会被删除,abc=null则活动对象才会被删除。

 

3.闭包与变量

function createFunctions(){
    var result = new Array();
    
    for (var i=0; i < 10; i++){
        result[i] = function(){
            return i;
        };
    }
    
    return result;
}
var a = createFunctions();

console.log(a[1]());

a = [function(){return i;}, function(){return i;},function(){return i;}...];

全局变量中引用createFunctions中的匿名函数,所以他的活动对象一直存在,且i=10。

 

4.关于this对象

 

函数表达式

标签:

原文地址:http://www.cnblogs.com/pcd12321/p/5585852.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!