• Javascript没有块级作用域


                                       --摘自《Javascript权威指南》

      Javascript没有块级作用域。函数中声明的所有变量,无论是在哪里声明的,在整个函数中它们都是有定义的。在下面的代码中,变量i、j和k的作用域是相同的,它们三个在整个函数体中都有定义。

      

       function test(o){
    var i=0;               //i is defined throughout function
    if(typeof o=="object"){  
      var j=0;            //j is defined everywhere,not just block
         for(var k=0;k<10;k++){    //k is defined everywhere,not just loop
       document.write(k);
         }
         document.write(k);      //k is still defined:prints 10
       }
       document.write(j);         //j is defined,but may not be initalized
    }

        这一规则(即函数中声明的所有变量在整个函数中都有定义)可以产生惊人的结果。下面的代码说明了这一点:

      

    var scope="global";
    function f(){
      alert(scope);    //Displays "undefined",not "global"
      var scope="local";   //Variable initialzed here,but defined everywhere
      alert(scope)
    }
    f();

      可能认为对alert()的第一次调用会显示出“global”,因为声明局部变量的var语句没有被执行。但是,由于这个作用域的限制,输出的并不是“global"。局部变量在整个函数体内都是有定义的,这就意味着在整个函数体中都隐藏了同名的全局变量。虽然局部变量在整个函数体中都是有定义的,但是在执行var语句之前,它是不会被初始化的,这个例子说明了为什么将所有的变量声明集中起来放置在函数的开头是一个好的编程习惯。

  • 相关阅读:
    css 背景透明 适合所有浏览器
    Razor中Html.DropDownListFor用法
    outlook2010如何初始化设置
    移除文件关联
    MVC中的Html.ActionLink的介绍(转)
    DES可逆加解密
    Razor视图下服务器代码给Javascript变量赋值
    js获取url参数值
    python 3 简单线程、数据库操、Mssql访问示例
    ps快捷键
  • 原文地址:https://www.cnblogs.com/hwpayg/p/j1.html
Copyright © 2020-2023  润新知