javascript中的函数

一·函数的定义

function关键字, 函数名称标识符,一对圆括号,一对花括号。
function add(x,y){
    return x+y;
}
var sub=function(x,y){
    return x-y;
}
var ten=(function(x){
    return x*x;
}(10));//函数表达式定义后立即执行
alert(ten);//100







二·函数的调用

1.函数调用

var a=add(2,1);//a=3
var b=sub(2,1);//b=1
当函数中 没有return语句return语句没有值,则 返回undefined
函数调用 通常不使用this

2.方法调用

方法调用由两部分组成:一个 对象函数。对象成为调用上下文,函数体中可以使用 this引用该对象
var cal={//对象直接量
    x:1,
    y:2,
    add:function(){
        return [this.x+this.y,this===cal];//this代指当前对象
    }
};
cal.add();//[3,true]
this为关键字,不是变量,不是属性名。嵌套函数 不可以使用外层函数中的 this,但 可以使用外层函数中的 变量
var obj={
    a:1,
    met:function(){
        var self=this;
        f();
        function f(){
            console.log(self.a);//1
            console.log(this.a);//undefined
        }
    }
};
obj.met();
扩展:方法链:当方法的返回值为一个对象,这个对象还可以再调用它的方法

3.构造函数调用

特点:使用new关键字。
function F(name){
    this.name=name;
    this.sayHello=function(){
        console.log("Hello world!");
    }
}
var a = new F();
a.sayHello();

4.间接调用

call()和apply()可以用来 间接调用函数。都允许显示制定调用所需的this。
任何函数可以用作 任何对象方法来调用,即使该函数不是该对象的方法。

三·实参对象

在函数体内,标识符 arguments指向 实参对象的引用,实参对象是一个类数组对象,可以通过数组下标就能访问实参值。
function max(){
    var max=arguments[0];
    for(var i=1;i<arguments.length;i++)
        arguments[i]>max?max=arguments[i]:max;
    return max;
}
console.log(max(1,2,40,99));//99

四·将函数用作值

function add(x,y){
    return x+y;
}
function sub(x,y){
    return x-y;
}
//某个函数为参数,并传入两个操作数
function operate(f,a,b){
    return f(a,b);
}
var i=operate(add,operate(add,1,2),operate(sub,2,1));//4

五·闭包

个人理解:即 返回嵌套函数
每次调用javascript函数时,都会为之创建一个 新对象 保存 局部变量,将该对象添加至 作用域链。当函数执行完,从作用域链中将该 对象回收
var a="global a";
function checka(){
    var a="local a";
    function f(){
        return a;
    }
    f();
}
console.log(checka());//undefined
将函数作为返回值。此时有一个 外部引用指向嵌套函数,它不会被当做垃圾回收,它所指向的变量绑定对象也不会。
var a="global a";
function checka(){
    var a="local a";
    function f(){
        return a;
    }
    return f();
}
console.log(checka());//local a

六·函数方法和构造函数

call()方法,apply()方法,bind()方法。
call()方法和apply()方法:将一个 对象中的方法放至 另一个对象中执行。
var obja={
    add:function(x,y){return x+y;}
};
var objb={};
var c=obja.add.call(objb,1,2);//3
var d=obja.add.apply(objb,[2,3]);//5。参数放入数组中传递
bind()方法:将 函数绑定至 某个对象上。
function f(y){return this.x+y;}
var obj={x:1};
var g=f.bind(obj);
g(2);//3。this.x绑定到1,y绑定到2
构造函数:
下面等价
var add=Function("x","y","return x+y;");
var add=function(x,y){return x+y;}

以上纯属自己的一些理解,希望能够给部分人一些帮助。
由于本人造化尚浅,望大神们勿喷。









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值