javascript笔记

3.3函数参数

- 什么时候使用参数

  - 当函数中出现不确定的值的时候,传递不同的参数 实现不同的功能

- 参数

  - 形参:function 函数名(形参1,形参2,.......){  代码块 }  形参之间用逗号隔开

  - 实参:函数名(实参1,实参2......)实参之间用逗号隔开  实参就是赋值给形参的值

- 参数个数问题

  ```js

          // 1.形参和实参个数一样

          function fun1(a, b) {//a 和 b都是形参 var a; var b; a=10 b=20

              console.log(a, b);// 10 20

          }

          fun1(10, 20);

          // 2.形参比实参个数多  从左往右一一赋值

          function fun2(a, b, c) {//var a=10 var b=20  var c

              console.log(a, b, c);// 10 20 undefined

          }

          fun2(10, 20);

          // 3.形参比实参个数少  从左往右一一赋值 多余的并不用管

          function fun3(a, b, c) {

              console.log(a, b, c);// 10 20 30

          }

          fun3(10, 20, 30, 40);

          // 4.参数个数不确定 arguments 参数的集合 arguments可以和形参一起使用

          function fun4(a, b) {

              console.log(a);// 10

              console.log(arguments);//集合

              console.log(arguments[0]);

              console.log(arguments.length);// 2 3 4

              var s = 0;

              for (var i = 0; i < arguments.length; i++) {

                  s += arguments[i];

              }

              console.log(s);

          }

          fun4(10, 20);

          fun4(10, 20, 30);

          fun4(10, 20, 30, 40);

  ```

- 参数的数据类型

  ==所有的js数据类型都可以作为函数的参数 null和undefined不要作为参数 没有意义==

```js

        // 5.参数的类型

        // 所有的js数据类型都可以作为函数的参数 null和undefined不要作为参数 没有意义

        function auto(a) {

            console.log(a);

        }

        auto("文字");

        auto([1, 3, 4, 5]);

        auto(true);

        auto({ "name": "zs", "age": 123 });

        auto(function () { });

```

- ==函数的注意事项==

  - 重名会被覆盖  后面的会覆盖前面的

  - 当形参和实参参数不一致的时候  未被赋值的形参是undefined

```js

<script>

        // 1.重名会被覆盖  后面的会覆盖前面的

        function auto() {

            console.log(1);

        }

        function auto() {

            console.log(2);

        }

        auto();

        // 2.当形参和实参参数不一致的时候

        function fun1(a, b, c) {//形参var a  var b  var c   a = 10  b=20

            console.log(a, b, c);//10 20 undefined

        }

        fun1(10, 20);

    </script>

```

### 3.4作用域

- 概念:变量或者函数的有效使用范围

- 分类:局部作用域  全局作用域

- 名词

  - 全局变量/全局函数:在函数外面声明的变量/函数,可以在任意地方访问和修改,会一直存储在计算机的内存中,直到页面关闭

  - 局部变量/局部函数:在函数里面声明的变量/函数,只有在函数内部可以使用,出了函数就会被销毁,不能使用

#### 3.4.1全局变量/函数

- 全局变量/全局函数:在函数外面声明的变量/函数,可以在任意地方访问和修改,会一直存储在计算机的内存中,直到页面关闭

```js

         var a = 10;//a 全局变量

        function fun1() {// fun1 全局函数

            var b = 20;// b 局部变量

            console.log(a);//10

            console.log(b);// 20

            function fun2() {

                console.log("这是局部函数fun2");

            };

            fun2();

        }

        fun1();

        console.log(a);//10

        // console.log(b);//报错 b is not defined

```



 

#### 3.4.2局部变量/函数

- 局部变量/局部函数:在函数里面声明的变量/函数,只有在函数内部可以使用,出了函数就会被销毁,不能使用

```js

        var a = 10;//a 全局变量

        function fun1() {// fun1 全局函数

            var b = 20;// b 局部变量

            console.log(a);//10

            console.log(b);// 20

            function fun2() {

                console.log("这是局部函数fun2");

            };

            fun2();

        }

        fun1();

        console.log(a);//10

        // console.log(b);//报错 b is not defined

```

==注意事项:==

-  注意1:只有函数{}内声明的都是局部  其他都是全局

- 注意2:声明变量没有var  这是一个全局变量

```js

        // 注意1:只有函数{}内声明的都是局部  其他都是全局

        if (1) {

            var n = 30;//全局

        }

        console.log(n);//30

        //注意2:声明变量没有var  这是一个全局变量

        function fun3() {

            a = 100;

        }

        fun3();

        console.log(a);

```

#### 3.4.2作用域链

- 作用域链:js的一种查找机制,先找自身作用域范围内的,依次父级作用域查找,一直到全局(window),如果全局也不到,则是返回报错信息 xxx is not defined

```js

       var a = 100;// a 全局变量

        function fun1() {//fun1  局部变量

            var a = 20;// a 局部变量

            console.log(a);//20

        }

        fun1();


 

        var b = 100;

        function fun2() {

            b = 10;

            function fun2() {

                var b = 20;

            }

            console.log(b);//全局变量的b  10

            console.log(c);// c is not defined

        }

        fun2();

```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值