7.函数
6.1函数的认识
定义一次,可以重复调用或者执行的一段js代码
6.2函数的作用
1.代码可以重复使用,提高使用效率,避免重复出现代码
2.根据功能模块将代码分离,提高代码的可读性
6.3函数的使用
1.声明
function 函数名(参数){
//函数体,需要执行的js语句;
}
无参函数:在调用无参函数时,不需要给参数传递数据
有参函数:在调用有参函数时,需给参数传递数据。
匿名函数:把函数直接赋值给变量,未给名字的函数叫匿名函数,function name() {};,匿名函数则是把name去掉,function() {};
var a = function() {
console.log(123);
};
参数的理解:
形参:在定义函数时,给函数设置的参数,该参数在函数内部使用(函数内部的变量)。如 function foo(a,b) {
console.log(a,b);
}
实参:调用函数时,给函数参数传入的具体的值。
如:foo(153,33);
foo(234,222);
2.函数调用
直接调用:函数名() ,有括号 ,如foo();
可以在函数内部调用其他函数:
function f1(a) {
console.log(a);
f2(a);
}
function f2(b) {
console.log(b);
}
f1(2);
递归函数:
自己调用自己
function a(l) {
a();//调用自己
};
a(a)
例子:
//先声明函数
function bar() {
var a = pasrseInt(prompt("输入一个数字"));
console.log( a * a);
}
console.log(a,b);//参数只能在函数内部使用,在函数外部会报错。
//调用函数
bar();
函数带形参
//先声明函数
function bar(a) {
console.log( a * a);
}
//调用函数
bar(2);
bar(3);
bar(4);
3.返回值函数
关键词:return
如:return a+b ;
function sum(a,b) {
return a + b;
}
var s = sum(1,2);
console.log(s);
注意:
1.用关键词 return 来返回,结果可以是变量,数字,函数
2.函数没有关键字return,那么返回值未undefined
3.return 之后的函数不在执行,停止继续执行
4.函数注释
/**
* 函数的作用
* @method 函数名
* @param{参数类型} 参数名 参数说明
* @return {返回值类型} 返回值说明
**/
5.arguments对象(important!)
产生位置:只能在函数内部访问的一个对象,可以记录函数传入实参的个数,结构与数组类似,但是不能使用数组方法,如map,forEach函数。
规则:js不会验证传递参数个数是否与函数定义的形参相等,可以存放任意个数实参,遗漏的参数,以undefined传递给形参。
传递的实参值都放在arguments中,可通过下标访问,如:arguments.[2];
function sum(a,b) {
return a + b;
};
sum(1,2,3,4);
求输入元素的和
function sum() {
var sum = 0;
for(i = 0;i < arguements.length; i++) {
sum = sum + arguements[i];
}
}
sum(1,2,3,4,5,6);
5.创建函数的方式
1.函数声明
function fun(形参) {};//具名函数
2.函数表达式
注意:不能在变量赋值之前调用
var a = function() {形参};//匿名函数
object.fun = function() {形参};
a();
6.提升(important!)
预编译
1.函数提升
通过函数声明创建的函数,会被自动提升至当前作用域最顶层。
2.变量声明
通过关键字 var 声明的变量,会被提升至当前作用域最顶层。
7.作用域
变量的作用范围。
全局变量:定义在函数外部的变量,可以在任何地方使用
局部变量:定义在函数内部的变量,只能在函数内使用,外部不起作用
注意:在当前作用域的最顶层声明变量、声明函数。
练习
var x = 10;
bar();
function foo() {
console.log(x);
};
function bar() {
var x = 30;
foo();
}
输出10;
var x = 10;
bar();
function bar() {
var x = 30;
foo();
function foo() {
console.log(x);
};
}
输出30

浙公网安备 33010602011771号