zoukankan      html  css  js  c++  java
  • javascript 变量的作用范围

    来自: http://hanxin0311.iteye.com/blog/181127

    1.根据作用范围不同,变量有全局变量和局部变量两种。在函数里定义的变量为局部变量,局部变量只在函数内有效。 如果局部变量和全局变量用相同的变量名,则局部变量将覆盖全局变量。

    script>   
        //定义全局变量test   
        var test = "全局变量";    
        function checkscope()   
        {   
            var test = "局部变量";   
            alert(test);   
        }   
        checkscope();    
    //在函数里定义的变量为局部变量,局部变量只在函数内有效。   
    //如果局部变量和全局变量用相同的变量名,则局部变量将覆盖全局变量   
    </script>  

    2.JavaScript语言没有块范围。

    <script>   
        function test(o)       
        {   
            //定义变量i,变量i的作用范围是整个函数   
                var i = 0;   
            if (typeof o == "object")    
            {   
                //定义变量j,变量j的作用范围是整个函数内,而不是if块内。   
                    var j = 5;   
                    for(var k = 0; k < 10; k++)   
                    {   
                    //k的作用范围是整个函数内,而不是循环体内   
                        document.write(k);   
                    }   
            }      
            //即使出了循环体,k的值依然存在   
            alert(k + "
    " + j);    
        }   
        test(document);   
    </script>  

    因为JavaScript语言没有块范围,有时会出现一些非常奇怪的结果:

    <script>
    
        var scope = "全局变量";
        function test()
        {
            alert(scope); 
            var scope = "局部变量";
            alert(scope); 
        }
        test();
    //代码第一次输出的scope值并不是"全局变量",而是undefined。知识这是因为scope在test函数中已经被重新定义了,局部变量在test函数中将全局有效,即在scope还没定义之前全局变量scope依然被覆盖。
    </script>

    变量作用范围在进行HTML事件处理时一样有效:

    <script type="text/javascript">
      var x = "全局变量";
    </script>
    
    <form action="#" method="get">
    <input type="button" value="局部变量" 
      onclick="var x = '局部变量'; alert('输出x局部变量的值:' + x);" />
    <input type="button" value="全局变量 " 
      onclick="alert('输出x全局变量的值: ' + x);" />
    </form>
  • 相关阅读:
    16 pymysql模块的使用
    15 可视化工具 Navicat的简单使用
    14 补充 MySQL的创建用户和授权
    13 多表查询
    linux常用查看文件或日志命令
    linux查找大文件命令
    linux测试环境维护之磁盘空间维护
    linux配置IP访问权限
    通过pytty工具代理连接数据库mysql(绕开数据库白名单限制)
    redis安装详解
  • 原文地址:https://www.cnblogs.com/allenhua/p/3663884.html
Copyright © 2011-2022 走看看