函数
作用
1.简化代码
2.方便维护
3.提高开发效率
4.提高了代码的复用性,减少代码冗余
格式
function 函数名(参数...){
函数执行的代码
}
eg:
hs();//函数调用
// 函数定义
function hs() {
document.write("八千里路云和月,三十功名尘与土");
}
【注意】函数先定义后调用
分类
1.内置函数(官方提供的函数,系统自身拥有函数)
alert();
document.write();
console.log();
parseInt();
parseFloat();
2.自定义函数
根据参数和返回值的不同,可将函数分为四种。
参数:
- 形参 :形式上参数
- 实参 :实际参数
**返回值:**对函数执行完成的结果的返回。
**return:**结束当前函数,并将return后面的值(表达式/变量)作为函数的运行结果返回。
当我们需要对函数的运算结果进行不同的处理时,需要将函数的结果返回。
1.无参数无返回值
<script>
// 求1-100的和,将结果输出到页面。
function sum() {
var sum = 0;
for (var i = 1; i <= 100; i++) {
sum += i;
}
document.write(sum);
}
sum();
</script>
2.有参数无返回值
// 求1-n的和,将结果输出到页面。
<script>
function sum(n) {
var sum = 0;
for (var i = 1; i <= n; i++) {
sum += i;
}
document.write(sum);
}
sum(100);
</script>
3.无参数有返回值
<script>
// 求1-100的和
function sum() {
var sum = 0;
for (var i = 1; i <= 100; i++) {
sum += i;
}
return sum;
}
// 1.调用,将结果弹出
var a = sum();
alert(a);
// 2 调用,将结果输出到页面上
document.write(a);
// 3.调用 将结果输出到控制台。
console.log(a);
</script>
4.有参数有返回值
<script>
// 求1-n的和。
function sum(n) {
var sum = 0;
for (var i = 1; i <= n; i++) {
sum += i;
}
return sum;
// document.write(sum);
}
// 1.调用,将结果弹出
var a = sum(100);
alert(a);
// 2 调用,将结果输出到页面上
document.write(a);
// 3.调用 将结果输出到控制台。
console.log(a);
</script>
封装函数
1.确定函数的执行代码:函数体。
2.找出变量(不确定值。),将其设置为形参
3.如果需要对返回结果进行不同的处理,则定义返回值。
eg:
<script>
var arr = ["苏轼", "辛弃疾", "李白"];
function joint(arr) {
var str = "";
for (var i = 0; i <= arr.length - 1; i++) {
str += arr[i];
if (i == arr.length - 1) continue;
str += "|";
}
return str;
}
alert(joint(arr));
</script>
arguments
arguments:是用来存储实参。
eg1:
<script>
function joint() {
alert(arguments.length);
for (var i = 0; i < arguments.length; i++) {
alert(arguments[i]);
}
var str = arguments[0];
for (var i = 1; i < arguments.length; i++) {
str = str + "|" + arguments[i];
}
document.write(str);
}
joint("苏轼", "辛弃疾", "李白", "李商隐", "杜甫");
</script>
eg2:
<script>
function sum() {
var sum = 0;
for (var i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
document.write(sum);
}
sum(12, 5, 8, 10, 15);
</script>
作用域
作用域:变量存在的范围
1.全局变量
- 直接写在Script标签中的变量,在页面中的任意位置都可以访问到。
- 在页面打开创建,在页面关闭时销毁。
2.局部变量
- 局部变量是定义在函数内部的变量.这个变量只能在函数内使用.例外,函数中的形参也是局部变量.
- 每一次调用时创建,调用结束会销毁。
eg:
<script>
// 声明提升
console.log(b);
var b = 21;
function fun(b) {
var a = 0;
console.log(a);
console.log(b);
}
fun(5);
console.log(b);
</script>
【注意】
如果局部变量与全局变量重名,则使用局部变量。若函数内部没有找到该变量,则去全局变量中查找。
递归
递归:函数之间可以互相调用,如果函数内部调用了其自身,则我们称其为递归调用。
特点:
1.函数自己调用自己
2.一般情况下还有参数
3.一般情况下有返回值.
方法:
1.找这一次计算与上一次计算的关系。
2.调用自身。
3.找到函数结束的条件。
eg1:
<script>
// 求n的阶乘
function fac2() {
var result = 1;
for (var i = 1; i <= 10; i++) {
result *= i;
}
return result;
}
alert(fac2(10));
</script>
eg2:
<script>
// 求n的阶乘
function fac(n) {
if (n == 1) {
return n;
}
return n * fac(n - 1);
}
alert(fac(10));
</script>