JavaScript函数的参数关系

函数的参数关系

当函数定义时,可以定义形参,当函数执行时,可以传递实参。
如果函数在执行时,传递的参数与形参不一致,分类如下

当形参比实参多: 
    多余的形参的值为undefined
function sum(a, b) {
    console.log(a);
    console.log(b); 
}
sum(10); // a是10 b是undefined
当形参比实参少:
    没有形参接收多余的实参
function sum(a, b) {
    console.log(a);
    console.log(b);
}
sum(10, 11, 12); // a是10 b是11 12没有形参来接收

arguments

arguments是函数内部的一个成员,只有在函数执行的时候才会存在。可以使用它来获取本次函数在执行时,所有传递的实参。
arguments.length可以获取实参的个数。
function sum() {
    console.log(arguments);
    console.log(arguments.length);
}
sum(1); // => [1]  arguments.length => 1
sum(2); // => [2]  arguments.length => 1
sum(1, 2, 3, 4, 5); // => [1, 2, 3, 4, 5]  arguments.length => 5

arguments是一个类数组对象,也叫做伪数组对象。可以使用 arguments[数字] 来获取对应的值。 数字是 从0开始 的。 这个数字,也可以叫做 下标 或者 索引

function sum() {
    console.log(arguments[2]);
}
sum(1, 2, 3, 4); // => 3
sum(1, 2); // => undefined

return关键字

作用:该关键字是用于在 函数内部 返回内容中止函数执行 的。

// 中止函数执行
function demo() {
    console.log(1);
    console.log(2);
    console.log(3);
    return;
    console.log(4);
    console.log(5);
}
demo(); // 只会输出1 2 3 而不会输出4 5 因为遇见了return
// 返回内容
var a = 10;
var b = 11;
function sum(num1, num2) {
    return num1 + num2;
}
// 进行计算
var result = sum(a, b);
// 使用结果
console.log(result); // 21

注:return关键字只能够在函数内部出现。

函数的定义过程

1 在内存中开辟一个空间
2 把代码放进去
3 把空间的地址交给函数名

函数的调用过程

1 根据函数名称找到内存空间
2 将实参的值传递给形参
3 开始解析内存空间中的代码
4 执行代码

作用域

作用域: 指的是变量起作用的范围 
作用域的划分规则: 只有全局作用域和函数的私有作用域
作用域是根据书写的单词和语法来确定的,所以又叫做词法作用域.
所以,通常我们把代码写完,就可以确定每一个作用域的范围.
注: script标签之间是全局作用域 多个script标签共享同一个作用域 但是每一个script标签中的变量 函数,它们的提升,只能够在本script标签的范围之内.
注: 浏览器在加载script标签的代码的时候,是一个执行完,再去加载执行后面的一个.
    <script>
        var a = 10;
    </script>
    <script>
        console.log(a); // 输出10
    </script>

    <script>
        console.log(a); // ReferenceError: a is not defined
    </script>
    <script>
        var a = 10;
    </script>

函数的属性

函数的属性之一: name  它是函数的名称 函数的名称不论是表达式还是声明 都是变量的名字
函数的属性之二: length  它是函数的形参的个数 
    function demo(a, b, c) {

    }
    console.log(demo.name); // "demo"
    console.log(demo.length); // 3

    var fun = function() {

    }
    console.log(fun.name); // "fun"
    console.log(fun.length); // 0

递归函数

递归函数指的是函数自己再函数体内部调用自己.

注: 无停止条件的递归 就是死循环 写递归函数,先写停止条件

    // a变量一定要定义在函数外部 
    var a = 0;
    function demo() {
        a++;
        if (a >= 10) {
            return;
        }
        demo();
    }
    demo(); // 循环让a自加10次 之后就停止
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值