js从菜鸟到精通day04-函数

04-函数

4.1 函数的参数

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 创建一个函数
        // 在创建函数的时候 接受的参数 叫做形参
        function sum(num1, num2) {
            console.log(num1);
            console.log(num2);
            console.log(num1 + num2);
        }
        // 给当前sum函数 传递参数
        // 在调用函数的时候 传递的参数叫做 实参
        sum(10, 20);
        sum(100, 202);
        sum(90, 80);
    </script>
</body>

</html>

4.2 创建函数

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>

        fun();
        // 1.字面量
        function fun() {
            console.log("我是字面量定义的函数");
        }
        fun();

        // fun2();
        // 2.匿名函数
        var fun2 = function () {
            console.log("我是匿名函数");
        }
        // console.log(fun2);
        // console.log(fun);
        fun2();


        // 3. 使用 new 构造函数
        var fun3 = new Function('console.log("我是构造函数")');
        fun3();

        // 4.自执行 函数
        (function () {
            console.log("我是自执行函数");
        })()
    </script>
</body>

</html>

4.3 函数的返回值return

function sum(num1, num2) {
 	var num3 = num1 + num2;
   	return num3;
}
//接受函数执行的返回值
var result = sum(5, 10); //15

注意点:

  • 函数在执行完return语句之后停止并立即退出。因此,位于return语句后面的任何代码永远都不会执行。

  • 一个函数中可以有多个return语句。

  • return语句也可以不带任何返回值。

4.4 arguments对象

arguments 是一个对应于传递给函数的参数的类数组对象。

可以使用arguments对象在函数中引用函数的参数。此对象包含传递给函数的每个参数,第一个参数在索引 0 处。例如,如果一个函数传递了三个参数,你可以以如下方式引用他们:

function func1(a, b, c) {
  console.log(arguments[0]);
  console.log(arguments[1]);
  console.log(arguments[2]);
}

func1(1, 2, 3);

4.5. 函数是一种数据类型

function数据类型

function fn() {}
console.log(typeof fn);//返回值是function

因为函数也是一种类型,可以把函数作为一个函数的参数,在一个函数中调用

function fun() {
  	console.log('函数哦');
 };

// 函数作为superfun的参数
function superfun(theFun) {
    theFun();
    console.log('执行了');
};

superfun(fun);

4.6 作用域规则

  • 函数允许访问函数外的数据。

  • 整个代码结构中只有函数可以限定作用域。

  • 作用域规则首先使用提升规则分析。

  • 如果当前作用规则中有名字了, 就不考虑外面的名字。

    注意点:

    局部变量退出作用域之后会销毁,全局变量关闭网页或浏览器才会销毁。

4.7 全局变量和局部变量

变量的作用域范围可分为全局变量和局部变量。

  • 全局变量:

  • 在最外层声明的变量叫全局变量。

在函数体内部,没有使用var关键字声明的变量也是全局变量。(不推荐)

  • 局部变量:

在函数体内部,使用var关键字声明的变量叫作局部变量。

 

4.8 作用域链(重点)

  • 只有函数可以制造作用域结构, 那么只要是代码,就至少有一个作用域, 即全局作用域。凡是代码中有函数,那么这个函数就构成另一个作用域。如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域。

  • 将这样的所有的作用域列出来,可以有一个结构:在当前作用域中没有查到值,就会向上级作用域去查,直到查到全局作用域,这么一个查找过程形成的链条就叫做作用域链

  • 作用域链:采取就近原则的方式来查找变量最终的值。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值