zoukankan      html  css  js  c++  java
  • javascript 关于语义化作用的理解

    看代码实例1

          var a=1;
            function  m(a){ //此处为形参第一个传入函数的参数,既为arguments[0]
                alert(a);  //此处a为与形参绑定的
            }
            m(a);//1   此时的a为把变量a当作参数传入函数
    .......................................................................................................
            var a=1;
            function  m(a){
                alert(a);
            }
            m();//undefind 因为没有传入参数 所以与函数内a绑定的为空,因此alert一个undefined

     代码实例2

      var a=1;
            function  m(){ //函数创建时就将会将创建环境中的一些变量和对象保存在自己的作用域中,这也就是说函数的定义域取决于定义的位置,这就是语义化作用域,区别于c语言的块级作用域
                alert(a);
                alert(b);
            }
            function n(){
                var a=5;
                var b=3;//
                m();
            }
            n();// alert a为1,到b时报错 is not defined
            m();// alert a为1,到b时报错 is not defined

    可见函数m在创建时,已经将自己绑定到创建环境的作用域中,此处既为全局作用域,当在函数n中调用时,它并不会向函数n的私有作用域内去寻找变量,所以函数n内定义

    的a和b不会出现在函数m的作用域链中,结果如代码中注释所示。

    代码实例3

          var a=1;
            function  m(a){ //此处的a和函数里面的a都为形参,与第一行声明的a变量没有任何关系,它们没有实例2中的绑定关系
                alert(a);
            }
            function n(){
                var a=5;// 
                m(a);//将变量a传入函数m,当需要alert a时,就会将a的值alert,
            }
            n();//5
            m();//undefind

    此处因该区分形参与变量的区别。

    关于匿名函数的作用域更加复杂,等睡个好觉再起床整理一下。

  • 相关阅读:
    Dephi XE 编译后执行文件的路径怎么改
    一名Delphi程序员的开发习惯
    Delphi AnimateWindow 用法 淡入淡出窗口
    Delphi开发DLL
    delphi 中配置文件的使用(*.ini)
    Delphi中根据分类数据生成树形结构的最优方法
    Delphi語法筆記
    2015年10月19日 做过的面试题(四)
    ios 客户端定位的3种方法
    常用开源镜像站整理android sdk manager
  • 原文地址:https://www.cnblogs.com/xueandsi/p/5965733.html
Copyright © 2011-2022 走看看