zoukankan      html  css  js  c++  java
  • JS高级——词法作用域

    作用域

    1、js中没有块级作用域

    2、如果有块级作用域,那么下面代码将会是undefined undefined

    <script>
        for (var i = 0; i < 10; i++) {
            var num = i;
        }
        console.log(i);//10
        console.log(num);//9
    </script>

    词法作用域

    1、就是在代码写好的那一刻,变量的作用域就已经确定了,这种作用域,就是所谓的词法作用域

    2、和词法作用域相对的叫动态作用域 ,js中是词法作用域不是动态作用域

    3、在JS中唯一能产生作用域的是函数

    <script>
        //代码写好的那一刻,变量的作用域就已经确定了
        //作用域要么在函数中,要么在全局,因为没有块级作用域
        var x = 100;
    
        function f() {
            alert(x);
        }
    
        function f1() {
            var x = 1;
            f();
        }
    
        function f2() {
            x = 1;
            f();
        }
    
        f1();//100
        f2();//1
    
    </script>

    在写下代码的那一刻作用域就确定了,f()函数中的x,永远会去找全局变量中x

    词法作用域规则

    1、函数允许访问函数外的数据

    2、整个代码结构中只有函数可以限定作用域

    3、作用域规则首先使用提升规则分析

    4、如果当前作用域中有了该变量, 就不考虑外面的同名变量

    参考:https://www.cnblogs.com/foodoir/p/5977950.html

  • 相关阅读:
    MySQL MHA高可用方案
    微服务架构的基础框架选择:Spring Cloud还是Dubbo?
    elasticsearch
    spring Cloud构建微服务架构
    SpringBoot-Learning
    JetBrains激活
    正则表达式(java)规则大全
    Android调用Webservice
    UCML针对数据表的修改自定义维护数据变更记录
    SQL游标模板
  • 原文地址:https://www.cnblogs.com/wuqiuxue/p/8341122.html
Copyright © 2011-2022 走看看