Javascript函数:一个有名字,有参数,有返回值的代码块。它定义一次,多次调用。
函数定义:函数定义有两种1.函数语句2.表达式
函数语句:function函数名(参数列表){ 函数体};
functiondistance(x,y){ var dx=x*x;var dy=y*y;return Math.sqrt(dx+dy); }
disrance(3,4);//返回5
表达式:一条函句句声明一个变量并把这个变量赋值给一个对象;
varf=function(x){ return x*x; };
f(5);//返回25.
表达式定义的函数可以立即执行。
注意事项:函数语句声明的是被提前到外部函数的顶部,所以可以在函数声明之前调用它;但是以表达式的不可以。如果一个函数有返回值,在函数执行后返回这个结果。如果没有就返回undefined。在这里写个例子:var t1=(function (x){ return x*x;}(10));//返回100; var t2=(function(x){x*x;}(10));//返回undefined,是不是有点神奇是一个小坑,不过还是遵循上面所说的。
函数调用:
定义后直接调用:function add(x,y){ return x+y; }; add(1,2);//返回3
作为对象的方法调用:var o={ x:1;y:2;add: function(){ return this.x+this.y}}; o.add();//调用对象o的add方法。注意this的使用,this这里指当前的对象。
这里介绍一个概念:方法链,就是在方法调用的过程中返回yige对象,在调用这个对象的方法,一次类推,就是一条链子。
需要注意的是this是一个关键字,不是变量也不是属性名,Javascript中不允许给this赋值。this也没有作用域,一般指向当前对象,就是调用方法的对象。但是在方法中调用函数,这样this不是全局变量就是undefined。
var o={
m:function(){
var self=this;
f();
function(){
console.log(this===o);//false
console.log(self===o);//true
}
}
}
call()和apply():看作是某个对象的方法,通过调用方法的形式来简接调用函数,call、apply的第一个参数是要调用函数的母对象,他是上下文,在函数体中通过this来获取对他的引用。对于call和apply的区别是在除第一个参数不一样,call是要将函数的参数一个一个传进去,apply是把参数放到数组中传。function f(x,y){}; var o={};f.call(o,1,2);f.apply(o,[1,2]);
关于函数先介绍这么多。。未完待续。。