189 8069 5689

作用域根据函数划分-创新互联

一、一个for实例

作用域根据函数划分

成都创新互联公司是一家集网站建设,湟源企业网站建设,湟源品牌网站建设,网站定制,湟源网站建设报价,网络营销,网络优化,湟源网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
     var pscope3 = document.getElementById('scope3');        function scope3() {            for(var i=0; i<10; i++){ 
               
            }
            echo(pscope3,  i);
        }
        scope3();

作用域根据函数划分

1、函数在java、C#等语言中,变量i只会在for循环语句中有定义,循环结束,i也就被销毁了。但在JavaScript中,变量i是定义在scope3()活动对象中的,因此在它定义开始,就可以在函数内部访问它。

2、打印出的i为“10”。

3、函数scope3等效于下面的代码:

作用域根据函数划分

     function scope3() {            var i;            for(i=0; i<10; i++){ 
               
            }
            echo(pscope3,  i);
        }

作用域根据函数划分

二、私有作用域的匿名函数

作用域根据函数划分

     function anonymous() {            var position = 'in anonymous';
            (function(){                for(var i=0; i<10; i++){ 
               
                }
                echo(pscope3, position);//打印显示"in anonymous"
            })();            //pscope3.innerHTML += i;//报错        }
        anonymous();

作用域根据函数划分

1、匿名函数可以用来模仿块级作用域,避免上面的那个问题。

2、在for循环外部插入了一个私有作用域。在匿名函数中定义的任何变量,新航道托福都会在执行结束时被销毁。

3、上面的那句注释掉的话,取消注释的话,就会显示错误信息:“ReferenceError: i is not defined”。

4、作用域的关系大致如下:

5、position是定义在anonymous函数中的,但可以在匿名函数中打印出来,因为anonymous的作用域包住了匿名函数,在匿名函数中找不到position定义,就往外找。

三、try语句catch部分的特殊情况

作用域根据函数划分

     function capture() {            var ex = 'in capture';            try{  
                i;
            }catch(ex){                var position= 'in catch';
                echo(pscope3, ex); //ReferenceError: i is not defined
                var ex = 'is catching';
                echo(pscope3, position);//in catch
                echo(pscope3, ex);//is catching            }
            echo(pscope3, position);//in catch
            echo(pscope3, ex); //in capture 不是catch中赋的值
            echo(pscope3, window.ex); //undefined        }
        capture();

作用域根据函数划分

1、catch的一个参数ex与capture函数下的局部变量ex同名。

2、catch中先打印ex,是错误信息,然后赋值为“is catching”,打印出来,但很奇怪,catch外面打印的ex是“in capture”,并不是里面覆盖的值。

3、position在catch中定义,但是可以在catch的外面打印出来。

4、window.ex输出的是undefined,也就是说ex不是全局的,因此可以推出catch后面的大括号是普通语句块的性质。

5、ex的性质可以视为唯一一个把catch语句块当做块作用域的变量,是catch语句块的局部变量。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享文章:作用域根据函数划分-创新互联
文章来源:http://cdxtjz.cn/article/dcgedi.html

其他资讯