函数定义
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
)
;
function
sumAll
(
)
{
var
i
,
sum
=
0
;
for
(
i
=
0
;
i
<
arguments
.
length
;
i
++
)
{
sum
+=
arguments
[
i
]
;
}
return
sum
;
}
计算参数全部的和
函数调用
作为一个函数调用
当定义一个函数后 如 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