欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android 程序员搞 js 之 基础(十)

程序员文章站 2022-06-13 17:01:51
...

Android 程序员搞 js 之 基础(九)

一、arguments 对象伪数组

这个伪对象可以替换 函数传入的任何参数如下:

 <script>
        function f() {
            console.log(arguments)
        }

        f(1,2,3,4,5,6)
    </script>

Android 程序员搞 js 之 基础(十)

二、函数的其他定义形式

函数的命名方式
1、命名函数
定义:函数有名字,就是命名函数;
2、匿名函数
定义:函数没有名字,匿名函数;

函数表达式

定义:把匿名函数赋值给一个变量而形成的表达式;

  <script>
        var fun = function () {
            console.log("我是一个匿名函数")
        };

        fun()
    </script>

Android 程序员搞 js 之 基础(十)

注意:

1、函数表达式,调用两次,则可以出现两次结果

  <script>
        var f1 = function () {
            console.log("函数一")
        };

        f1();

        
        f1 = function () {
            console.log("函数二")
        };
        f1();

    </script>

Android 程序员搞 js 之 基础(十)
同名函数调用两次,只会执行一个函数,并且是最后面的函数

  <script>
        function f1() {
            console.log("函数一")
        };

        f1();


        function f1() {
            console.log("函数二")
        };
        
        f1();
    </script>

Android 程序员搞 js 之 基础(十)

2、声明函数之后直接调用

 <script>

        (function () {
            console.log("直接调用的函数")
        })();
        
    </script>

Android 程序员搞 js 之 基础(十)

3、函数也是一种数据类型

类型为 function

4、回调函数

定义:将函数作为参数使用,则为回调函数

   <script>
        function f1() {

        }

        function f2() {
            console.log("打印函数 2")
        }

        f1(f2());
    </script>

Android 程序员搞 js 之 基础(十)

5、函数作为返回值

当函数作为返回值的时候,需要用一个变量去接收这个函数的返回值,否则调用毫无意义;
代码如下:

  <script>
        function f1() {
            console.log("带有返回值的函数");
            return function () {
                console.log("这是一个函数返回值")
            }
        }

        var ff = f1();

        ff();
    </script>

Android 程序员搞 js 之 基础(十)

三、函数的作用域

1、全局变量

定义:使用 var 定义的变量为全局变量,全局变量可以在页面内任何地方使用。
注意:全局变量,如果页面不关闭,则一直不会被释放,导致一直占用内存空间,消耗内存。

2、局部变量

定义:在函数内定义的变量为局部变量,外部不可以进行使用。

注意:局部变量 当函数调用完成之后,局部变量就会消失。

3、全局作用域

定义:全局变量的使用范围。

4、局部作用域

定义:局部变量的使用范围。

5、块级作用域(js 没有块级作用域)

定义:一对大括号就可以看成是一块作用域。js 在一对大括号内定义的变量可以在大括号外面进行使用,所以 js 内没有块级 作用域。

6、隐式全局变量

定义:声明变量没有var ,就叫做隐式全局变量
全局变量不可被删除,隐式全局变量可以被删除;

四、作用域链

函数内嵌套函数并且被调用,从而形成作用域链

 <script>

        var num = 10;

        function f1() {
            var num = 20;

            function f2() {
                var num = 30;

                function f3() {
                    var num = 40;
                    
                    console.log("num:" + num)
                }

                f3()
            }

            f2()
        }

        f1();

    </script>

Android 程序员搞 js 之 基础(十)

同名变量 使用为 就近原则。

五、预解析

预解析:就是在解析代码之前
预解析作用:把变量和和函数声明提前到当前所在的作用域的最上面。
函数声明提前,依然可以起作用,而变量提前则会产生 undefined 结果;
预解析分段 (多段 script 标签内的重名函数,不干涉);
案例:

 <script>
        f1();
        console.log(c);
        console.log(b);
        console.log(a);

        function f1() {
            var a = b = c = 9;
            console.log(a);
            console.log(b);
            console.log(c);
        }
    </script>

结果:
Android 程序员搞 js 之 基础(十)
由于 预解析的存在 导致 b、c为 隐式全局变量,而 a 为局部变量,所以 a 报错,其他的显示正常值 。

相关标签: Web 开发