HTML 学习之JavaScript作用域

1. 作用域

1.1 作用域的概述

通常来说 一段程序代码中所用到的名字并不总是有效和可用的。而跟定这个名字的可用性的代码范围就是这个名字的作用域。

作用域的使用提高了程序的逻辑性的局部性。增强了程序的可靠性,减少了名字冲突。

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        //JS作用域:就是代码(变量)名字在某个范围内起作用和效果 目的是提高程序的可靠性和减少程序命名冲突
        //JS作用域在(es6)之前分为 全局作用域和局部作用域
        //1. 全局作用域 整个script标签都有用或者是一个单独的JS文件.
        var num = 10;
        console.log(num);//10
        //2. 局部作用域 在函数内部就是局部作用域 这个代码的名字只在函数内部起作用
        function fn() {
            //局部作用域
            var num = 0;
            console.log(num);//0
        }
        fn();
    </script>
</head>

2 变量的作用域

2.1 变量作用域的分类

在JavaScript中 根据作用域的不同 变量可以分为两种:

1.全局变量

2.局部变量

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        //根据作用域的不同 我们变量分为全局变量和局部变量
        // 1 全局变量 在整个Script标签中或者整个js文件中都可以使用
        // 注意 如果在函数内部 没有声明 直接赋值的情况 也属于全局变量 但是必须在函数执行后才能有效
        var num = 10; //全局变量
        console.log(num);

        function fn() {
            console.log(num);
        }
        fn();
        //2 局部变量 在局部作用域下的变量
        //注意 函数的形参也是局部变量
        function fun() {
            //局部变量 函数外部不能使用
            var sum = 0;
            sum2 = 20;
        }
        // fun();
        console.log(sum2);

        //从执行效率来看全局变量和局部变量
        //1. 全局变量只有浏览器关闭时 才会销毁 比较占内存资源
        //2. 局部变量 当我们程序执行完毕 就会销毁 比较节约内存资源
    </script>
</head>

js没有块级作用域 但是在es6之后才有了块级作用域 比如OC或者Swift中的{}中声明的变量 作用域就是在花括号中 就是块级作用域。

但是在JS中es6之前没有。

3 作用域链

只要是代码 就至少有一个作用域

写在函数内部的局部作用域

如果函数中还有函数 那么在这个作用域中又可以诞生一个作用域

根据内部函数可以访问外部函数变量的机制 用链式查找决定哪些数据能被内部函数访问 就称为作用域链

猜你喜欢

转载自www.cnblogs.com/huanying2000/p/12380878.html