博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript 关于语义化作用的理解
阅读量:4560 次
发布时间:2019-06-08

本文共 1199 字,大约阅读时间需要 3 分钟。

看代码实例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

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

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

 

转载于:https://www.cnblogs.com/xueandsi/p/5965733.html

你可能感兴趣的文章
英语学习一周年
查看>>
set容器
查看>>
python基础学习目录
查看>>
微软必应地图加载错误:Uncaught TypeError: Microsoft.Maps.Location is not a constructor
查看>>
卷积神经网络是如何工作的(译文)
查看>>
微信开发 笔记1
查看>>
SQL server 删除日志文件 秒删
查看>>
MethodChannel 实现flutter 与 原生通信
查看>>
lua的性能优化
查看>>
vs2012 出现断点无法命中 解决方案。
查看>>
weex图片加载更多方法loadmore的使用
查看>>
创建您的 ActiveReports Web端在线报表设计器
查看>>
项目复审
查看>>
FreeMarker学习
查看>>
hihocoder 1631
查看>>
2018大都会赛 A Fruit Ninja【随机数】
查看>>
【实战HTML5与CSS3】用HTML5和CSS3制作页面(上)
查看>>
小公司的一年,一起看看小公司的前端可以怎么做
查看>>
oracle数据批处理
查看>>
Json网络解析
查看>>