javascript作用域


prtyaa
prtyaa 2023-12-26 18:07:40 67283
分类专栏: 资讯

1 作用域概述

代码名字(变量名、函数名、对象名等)在某个范围内起作用(可使用),目的是为了提高程序的可靠性更重要的是减少命名冲突

2 js的作用域(全局作用域、局部作用域、块级作用域)

2.1 全局作用域

代码名字(变量名、函数名、对象名等)在整个script标签内 或者 一个单独的js文件中 起作用(可使用)

2.2 局部作用域

代码名字(变量名、函数名、对象名等)在局部下(例如函数内部等) 起作用(可使用)

2.3 块级作用域

代码名字(变量名、函数名、对象名等)在{}内 起作用(可使用)
es5没有块级作用域es6新增块级作用域

3 变量的作用域

  • 全局变量
  • 局部变量
  • 块级变量

3.1 全局变量

变量名在整个script标签内 或者 一个单独的js文件中 起作用(可使用)
1

3.2 局部变量

变量名 在局部下(例如函数内部等) 起作用(可使用)
2

3.3 块级变量

es6更新文档

3.3 代码样例

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

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        //全局变量:
        //1.在全局作用域下的变量 在全局下都可以使用
        //2.如果在函数内部没有声明也是全局变量
        var num = 10; // num是一个全局变量
        console.log(num);
        function fn() {
            console.log(num);
        }
        fn();

        //局部变量
        //1. 在局部作用域下的变量
        //2. 函数的形参也是局部变量
        function fn2() {
            var num1 = 10; // num1就是局部变量,只能在函数内部使用
            num2 = 20;  // 注意:num2是全局变量 其实就是window.num2 = 20;
        }
        fn2();
        console.log(num2);
    </script>
</head>

<body>
</body>

</html>

3.4 全局变量和局部变量的区别

  • 全局变量: 在任何一个地方都可以使用,只有在浏览器关闭时才会被销毁,因此比较占内存
  • 局部变量: 只在局部使用,当其所在的局部代码块被执行时,会被初始化;当局部代码块运行结束后,就会被销毁,因此更节省内存空间

4 作用域链

代码样例:

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

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        var num = 10;

        function fn() {
            var num = 20;
            function fun() {
                console.log(num); //此时使用的num = 20的变量,就近原则
            }
        }
    </script>
</head>

<body>
</body>

</html>

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=30977
赞同 0
评论 0 条