账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    作用域的问题
    23
    0
    console.log(a);
    
    function test() {
       a = 1;
    }
    test(); // 报错 

    第一个问题:
    js是词法作用域不是动态作用域,也就是在代码写完时作用域就已经形成了,那么上面的那段代码在函数没有执行的时候在变量a没有声明的时候不是应该给window添加对应的这个属性名吗?这样无论函数是否一样会打印undefined的啊?

    还有函数执行与否会影响打印结果,不就是变成动态作用域了吗?

    同样还是第一个问题的引申,当函数内部的变量没有定义时,该变量是作为全局变量的,结合上面的案例我就更难理解了

    function getProduct(num1, num2) {
        product = num1 * num2;
        return product;
    }
    var product = 10;
    var number = getProduct(20, 20);
    alert(product);//得到的弹出框是400

    下面是第二个问题

        var num = 10;
        function test(){
          console.log(num);
        }
        
        function test1(){
          var num = 100;
          test();
        }
        
        test1(); // 10

    第二个问题: test函数的执行环境是test1作用域,所以会优先找test1中的变量num,为什么会是window中的变量?

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 溃烂模样 普通会员 1楼
      502 Bad Gateway

      502 Bad Gateway


      nginx
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部