ECMAScript函数表达式

函数表达式

函数声明
function sum(num1,num2){

    return num1+num2;

}

函数声明提升

函数表达式
var sum=function(num1,num2){

    return num1+num2

}

匿名函数——function关键字后面没有标识符

递归

递归——一个函数通过名字调用自身

递归阶乘函数

function factorial(num){
    if(num<1){
        return 1;
    }else{
        return num*arguments.callee(num-1);
    }
}

递归阶乘函数

var factorial=(funciton f(num){
    if(num<1){
        return 1;
    }else{
        return num*f(num-1);
    }
});

闭包

闭包——指有权访问另一个函数作用域中的变量的函数

创建闭包——在一个函数内部创建另一个函数

function createComparison(propertyName){
    return function(object1,object2){

var value1=object1[propertyName];
var value2=object2[propertyName];
        if(value1<value2){
            return -1;
        }else if(value1>value2){
            return 1;
        }else{
            return 0;
        }
    };
}

闭包与变量——闭包只能取得包含函数中任何变量的最后一个值

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

例:

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

-this对象

var name="the window";
var object={
    name:"my Object",
    getNameFunc:function(){
        var that=this;
        return function(){

return that.name;
    };

}
};
alert(object.getNameFunc()(); //my Object)

var name="the window";
var object={
    name:"my Object",
    getNameFunc:function(){
        return  this.name;
    };
};
alert(object.getNameFunc()(); //my window

模仿块级作用域

JavaScript没有块级作用域——块语句中定义的变量,实际上是包含在函数中

(function(){
    //这里是块级作用域
})();

(function(){
    var now=new Date();
    if(now.getMonth()==0 && now.getDate()==1){
        alert("Happy new year");
    }
})();

私有变量

私有变量——局部变量、函数的参数、函数内部定义的其它函数

特权方法——在构造函数中定义特权方法

function MyObject(){
    //私有变量和私有函数
   
var privateVariable=10;
    function privateFunction(){
        return false;
    }
    //特权方法
   
this.publicMethod=function(){
        privateVariable++;
        return privateFunction();
    };
}

静态私有变量

私有变量——在私有作用域中定义私有变量或函数,创建特权方法

(function(){
    //私有变量和私有函数
   
var privateVariable=10;
    function privateFunction(){
        return false;
    }
    //构造函数
   
myObject=function(){};
    //特权方法
   
MyObject.prototype.publicMethod=function(){
        var privateVariable=10;
        return  privateFunction();
    };
})();

模块模式

var singleton=function(){
    //私有变量和私有函数
   
var privateVariable=10;
    function privateFunction(){
        return false;
    }
    //创建对象
   
var object=new CustomType();
    //特权方法
   
object.publicProperty=true;
    object.publicMethod=function(){
        privateVariable++;
        return privateFunction();
    };
    return object;
}

 

转载于:https://my.oschina.net/u/3240534/blog/856767

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值