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

JS高级学习笔记 —— 071 JS高级之作用域

程序员文章站 2022-07-15 10:46:43
...

/*
作用域

在JS中,函数嵌套是非常普遍的,
在函数嵌套中,

对变量是如何寻找的?
答:首先在函数内寻找
寻找不到,则往外层寻找

直到…全局(window)区域
*/

<script type="text/javascript">

var c = 5;

        function t1() {
            var d = 6;

            function t2() {
                var e = 7;

                // var d = 3; 

                alert(c+d+e);
            }
            t2();     
        }

t1(); //15,18

</script>

/*
关于声明变量 var

var是用来声明一个变量
如果不加var,就是一个赋值操作

但不能狭隘地理解为 声明了一个全局变量
*/

<script type="text/javascript">

        alert(window.d); //undefined
        alert(window.e); //undefined

        function t() {
            d = 5;
            var e = 6;
        }

        t();

        alert(window.d); //5
        //d没有加var,仅仅是一个赋值操作,寻找t域内的函数,没找到,继续找-->window.d = 5
        alert(window.e); //undefined

</script>
<script type="text/javascript">

        function t1() {
            var d;

            function t2() {
                d=5;
                e=6;
            }

            t2();
        }
t1();

console.log(e); //6
console.log(d); //undefined
console.log(window.d); //undefined

</script>

/*
注意:
以window.xx引用全局变量,寻找不到,作为某个属性不存在,返回undefined
直接以xx引用某命题,寻找不到,就报xx is not defined错误
*/


//词法分析

/*
解释:

js代码自上而下执行!

但是—–
js代码在整体运行分:

词法分析期
运行期

自上而下的执行叫词法分析过程!
*/

相关标签: 作用域