函数定义
javascript用 function 来定义函数
形式如下
function functionName(参数)
{
执行的代码
}
函数自调用
如果表达式后面紧跟 () ,则会自动调用。
不能自调用声明的函数。
通过添加括号,来说明它是一个函数表达式:
(function () {
var x = "Hello!!"; // 我将调用自己
})();
var x = "Hello!!"; // 我将调用自己
})();
函数可以作为一个值来使用
x =functionname(参数);
x可以变成该函数的值
函数参数
显示参数与隐式参数
显示参数:函数中直接定义的参数 如 function myfunction(a,b){ }
a b就是显示参数。
隐式参数:显示参数代表的具体的值。
Arguments 对象
arguments对象可以直接代表参数
x
= sumAll(1,123,500,115,44,88);
functionsumAll(){
vari,sum
= 0;
for(i
= 0;i
< arguments.length;i++){
sum
+= arguments[i];}
returnsum;}
计算参数全部的和
函数调用
作为一个函数调用
当定义一个函数后 如 function myfunction(a,b){ var x=a+b; return x;}
可以用myfunction(1,2)的方式进行调用
当函数没有被自身的对象调用时, this 的值就会变成全局对象。
作为一个方法调用
作为函数方法调用函数
call() 和 apply() 是预定义的函数方法。 两个方法可用于调用函数,两个方法的第一个参数必须是对象本身。
例如
function myFunction(a, b) {
return a * b;
}
myFunction.call(myObject, 10, 2); // 返回 20
return a * b;
}
myFunction.call(myObject, 10, 2); // 返回 20
和
function myFunction(a, b) {
return a * b;
}
myArray = [10,2];
myFunction.apply(myObject, myArray); // 返回 20
return a * b;
}
myArray = [10,2];
myFunction.apply(myObject, myArray); // 返回 20
闭包
变量有两种
全局变量:应用于页面所有脚本
局部变量:只应用在当前函数
内嵌函数
function add() {
var counter = 0;
function plus() {counter += 1;}
plus();
return counter;
}
var counter = 0;
function plus() {counter += 1;}
plus();
return counter;
}
内嵌函数 plus() 可以访问父函数的 counter 变量:
闭包
闭包就是能够读取其他函数内部变量的函数。
function f1(){
n=999;
function f2(){
alert(n);
}
return f2();
}
var result=f1();
result(); // 999