JAVASCRIPPT作用域-函数作用域和声明提前【摘自《Javascript 权威指南》】

     一个变量的作用域是程序源代码中定义这个变量的区域。全局变量拥有全局作用域,在JavaScript代码中的任何地方都是有定义的。

然而在函数内声明的变量只在函数体内有定义。他们是局部变量,作用域是局部性的。函数参数也是局部变量,他们只在体内有定义。

     在函数体内,局部变量的优先级高于同名的全局变量。如果在函数内声明的一个局部变量或函数参数中带有的变量和全局变量重名,

全局就被局部变量所覆盖。

   eg:

     var a="aaaa";

     (function (){
          var a="bbb";
          console.log(a);

     })();

     =>   输出 bbbb;

    

   一般的编程语言中,花括号内的每一段代码都具有各自的作用域,在而且变量在声明它们的代码段之外是不可见的。我们称之为块级作用域。
  但在JavaScript中,没有块级作用域。取而代之地使用了函数作用域:变量在声明他们的函数以及这个函数的嵌套的任何函数体内都是可

  eg:

   (function test(O){
      var i=0;

      if(typeof O =="object"){

          var j=0;

           for(var k=0; k<10;k++){
                console.log(k); => 0~9

           }

           console.log(k); =>10

      } 

           console.log(j);=>  0

      })({});

 由上面例子 可知 函数体内声明的变量在函数体内始终是可见的。  这也意味着变量在声明之前 甚至已经可用了,这有个非正式的称为 函数变量声明提前

 

 

 

转载于:https://www.cnblogs.com/MKOne/p/4658454.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值