javascript高级课程-2
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript高级课程-2,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1905字,纯文字阅读大概需要3分钟。
内容图文
![javascript高级课程-2](/upload/InfoBanner/zyjiaocheng/736/e39b2cf8b571484ab4f3cc8d51228b2d.jpg)
作用域 var作用 词法分析
js作用域
var a=12; function a1(){ var a=11; function b(){ function c(){ console.log(a); } c(); } b(); } a1(); /*变量是如何寻找的 首先在函数内寻找 寻找不到 则到外层函数寻找 指导全局区域 */
var的用处
var a=12; b=1; function test(){ var c=12;//局部变量 b=2;//不加var 向外找找到全局变量b并且赋值 } test(); console.log(b);//打印全局变量
词法分析:
1、先分析参数
2、再分析变量声明
3、分析函数声明
具体步骤:
1、函数运行前的一瞬间、生成活动对象 简称AO
2、函数声明的参数,形成AO属性,值为实参的值,未传实参则为undefined
3、分析变量声明:如var age
如果AO上还没有age属性,则添加AO属性值为undefined
如果AO上已经有age属性则不作任何影响
4、分析函数声明,如function foo(){};
则把含赋值给AO.foo属性
如果属性已经存在则无情覆盖
var a=12; b=1; function test(c){ /*词法分析过程: 形参分析: test.AO.c=12; 声明变量分析 test.AO.c=undefined 如果前面形参分析已经存在该属性 则不影响 否则赋值 函数声明略过 */ var c=1;//局部变量 console.log(c);//执行时c被赋值为12 } test(); function test2(g){ console.log(g); function g(){ alert(2); } } test2(12); /*注意函数声明分析部分 虽然这里不像test一样执行时覆盖掉AO上的实参g属性,但这个是再词法分析过程时强行覆盖掉*/ function test3(g){ console.log(g); var g = function(){//此时词法分析过程将g看成一个声明的变量而不是函数 alert(2); } } test3(12);
再看一个例子:
t(); t2(); function t(){ alert('t'); } var t2=function(){//词法分析分析过程t2为声明 表达式值为undefended 无法执行 alert('t2'); }
复杂例子:
function test(a){ alert(a); function a(){ alert(a); } a(); } test(12); /* 分析外层test test.AO={} 分析参数 test.AO.a=12 分析声明变量 分析声明函数 test.AO.a=function(){ alert(a); } 执行test(12) 输出函数 分析函数a 分析参数 分析声明变量 分析声明函数 执行a() 找不到a 到外层test.AO中找 输出函数 */
function test1(a){ alert(a1); var a1 = function(){ alert(a1); } a1(); } test1(12); /* 词法分析 test1 test1.AO={} test1.AO.a=12 test1.AO.a1=undefined 执行test1 弹出undefined 并且a1赋值为函数function(){ alert(a1); } 词法分析test1() 执行test2 a1到外层找 弹出函数 */
内容总结
以上是互联网集市为您收集整理的javascript高级课程-2全部内容,希望文章能够帮你解决javascript高级课程-2所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。