一、函数
1.函数的概念: 是事件驱动,调用执行的,可重复使用的代码块。
在实际开发中如果出现大量重复性代码,就要考虑将这些代码封装成一个函数,
在需要相同的功能时,只需要调用这个函数。
2.函数的使用方法:
函数的使用包含两个步骤:
1) 函数的定义:
语法
function 函数名() {
函数体
}
function: 关键字,后面一定要有空格。
函数命名规则: 与标识符命名规则一样。
2) 函数的调用: 函数自身不会主动执行需要调用才会执行,
函数只定义不调用没有任何意义。
语法:
函数名();
3) 函数的声明提前: 浏览器会默认把函数的声明部分提升到当前作用域的最前面。
(类似于变量的声明提前)
4) 避免函数声明的时候函数名重复(因为,后声明的函数会把先声明的函数覆盖)。
3.函数表达式的方式定义函数:
function() {
}
函数表达式(函数字面量)
匿名函数: 没有名字的函数。
var test = function() {
}
test();
1) 函数表达式定义的函数,只能用接收的变量名在函数定义之后调用。
2) 函数声明的优先级大于变量声明的优先级。
二、函数参数
函数参数: 是函数内部跟函数外部沟通的桥梁。
形参: 定义函数时的参数为形参
实参: 调用函数时实际传递出去的参数为实参。
is not defined:为声明是一个错误(既没有var声明也没有赋值)。
undefin: 表示没有定义完成(变量只有var声明没有赋值)。
注:多个参数要用","隔开。
定义函数的时候不需要指定形参的类型。
调用的时候实参的类型就是形参的类型。
实参和形参是一一对应的
形参只能在函数内使用
三、函数属性
caller: 返回对现有函数的引用者/调用者
使用语法: 函数名.caller(返回对现有函数的引用者);
前提: 只有函数执行时才会有用
callee: 返回当前函数自身的引用
使用语法: 是arguments下的一个属性: arguments.callee;
console.log(arguments.length);//获取实参个数
console.log(arguments.callee.length);//获取形参个数
console.log(test.length);//获取形参个数
return: 将函数处理的结果通过return返回给函数的调用者
使用return注意事项:
1. 函数可以没有返回值(也就是可以没有return)
如果有只能有一个return。
2. 在程序执行过程中见到return就返回,不会继续执行return后面的代码。
四、函数的好处:
1.能够大大简化代码的可重复使用
2.编程模块化
五、函数作用域
作用域链: 在JS中,如果某个变量没有var声明,就会自动到上一级作用域中去找这个变量的声明,
如果找到就使用,如果没有找到就继续向上查找,一直找的全局作用域为止;
如果全局作用域里也没有这个变量的声明语句;
那么浏览器就会自动帮你在全局作用域中对这个变量进行声明 (这种变量叫做隐式声明)
注: 在JS中只存在函数作用域不存在块作用域
六、递归
递归: 函数执行过程中自己调用自己
var sum = 0;
var a =0;
function fn() {
sum+=a;3
a++;
if (a>100) {
return a;
}
fn();
console.log(sum);
}
fn();