var声明与不声明的区别

var声明与不声明的区别;

1.function A(){
    function B(){
    function C(){
        a = 'a'
    }
        C();
    }
    B();
}
A();
console.log(a);//a
2.function A(){
    function B(){
     var a;
    function C(){
        a = 'a'
    }
        C();
    }
    B();
}
A();
console.log(a);//报错
3.function A(){
    function B(){
    function C(){
      var a = 'a'
    }
        C();
    }
    B();
}
A();
console.log(a); //报错
  • 不用var声明,js引擎就会先在当前作用域找到有没有a的声明,如果当前作用域没有,就会沿着作用域链向上找,如果找到就会赋值给a,如果找到了全局作用域还没有找到a的声明,全局作用域中就会自动创建一个具有该名称的变量声明,并将其返还给引擎,前提是程序运行在非严格模式下。
  • 第二段代码由于在B函数的作用域内就找到了var a = undefined;所以就不会在全局作用域声明a;
  • 如果在严格模式下,到了全局作用域如果还没有找到a的声明,就会直接报错。

通过这三段代码和这段文字细品var声明与不声明的区别

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值