JS 无块级作用域

几个地方看的例子不够明确,至少自己看了不够
这边记录下

JS作用域为“函数级作用域”,记住最简明的一句“ 函数中声明的所有变量,无论是在哪里声明的,在整个函数中它们都是有定义的。

下面是自己的笔记
(1)首先,只是在这个函数中有 定义,也就是说,在输出语句后定义和输出语句前定义是一样的结果,最后变量的值都是“undefined”,下面两种写法结果一样;
  1. function local(){   
  2.     document.write(local);
  3.     var local;
  4. }
  5. function local(){
  6.     var local;
  7.     document.write(local);
  8. }
如果涉及到变量赋值,下面两个效果就不一样
  1. function local_1(){
  2.      var local= "local" ;
  3.      document.write(local);
  4.      // 输出local      
  5. }
  6. function local_2(){
  7.      document.write(local);
  8.      var local= "local" ;
  9.      // 输出undefined    
  10. }
(2)另一个“无块级作用域”示例
  1. function local(){   
  2.     for(var i = 0 ; i<=2 ;i++){
  3.         document.write(i);
  4.     }
  5.     document.write("<hr>");
  6.     document.write(i);
  7.     /*输出
  8.           012
  9.           ----------
  10.           3
  11.         */
  12. }
显然,变量i在for循环中定义,但离开for这个程序块,它仍旧可以使用,原因就是它还是在local这个函数中。

(3)关于全局变量,和C等差不多了,简单放个例子
  1. var global = "global";
  2. function local_1(){ 
  3.     document.write(global);
  4.     //输出global
  5. }
  6. function local_2(){
  7.     document.write(global);
  8.     var global   ;
  9.     //输出undefined
  10. }
  11. function local_3(){
  12.     var global = "local"  ;
  13.     document.write(global); 
  14.     //输出local
  15. }



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值