javascript--词法分析
来源:互联网 发布:淘宝买衣服 如何换货 编辑:程序博客网 时间:2024/06/15 11:54
<!DOCTYPE html><html><head><title></title><script type="text/javascript">/*作用域 解释:变量的作用域在自己所在的这个函数*//*var a=1;function t1(){var b=2;function t2(){var c=3;alert(a+b+c);}t2();}t1();*/// ==6 函数嵌套很普遍 首先变量函数里寻找 找不到再到外层 直到最外层/*Q var 函数里什么时候要加A var是在函数运行的上下文中声明一个变量没加var 仅仅是赋值操作 但不要狭隘的理解为全局*//*alert(window.d);//undefiedalert(window.e);//undfunction t(){d=5;//赋值操作 函数内找不到var(声明操作) 直到最外层, 写了个全局 window.d=5;var e=6;//var 函数内的变量,在全局内声明就是全局,这里是函数里声明}t();alert(window.d);//5alert(window.e);//und*//*Q一个加window.d 一个不加win,什么区别A 用一个没有的变量测试,有win的引用全局变量时,是作为某个属性不存在返回un不加win 是报 xxxis not und ,上面一个轻微一点 *//*function t1(){var d;function t2(){d=5;//这边赋值,往外找,在t1找到e=6;//同上面一个例子 全没找到,就写了个全局}t2();}t1();console.log(e);// == 6 因为写下面的下面就报错不执行下去了console.log(window.d);//und console.log(d);//因为全局 所以is not defied*//*var加不加对找不到这个变量的影响和加不加win类似*/var str1='tama';function t1(){console.log(str1);//存在的变量 打印变量console.log(str2);//执行到这行时 在函数t1内找没, 又到外层全局寻找str2 str2 = 'beef';//到这行 才把全局赋上值,如果上下两行颠倒就能显示出来了var str2= 'bee';}t1();//tama beef is not defied// tama bee undefied</script></head><body></body></html>
为什么会有undefied和is not defined区别呢
这就要引出这个了----词法分析
js代码自上而下执行
但是在整体运行分:
词法分析期
运行期
自上而下执行之前,先有一个词法分析过程 就是下面说的
js里的函数运行解析
0.函数运行前 生成 Active Object(活动对象,缩写AO)
从函数的三个看:参数(函数名后括号里的),变量声明(有var的),函数声明(function)
1.参数 形成AO的属性,值为undefined,如有==那个值
2.变量 同上 但若已存在,则不改变
3.函数 例:function foo(){} 赋给foo属性,若已存在,则覆盖
function a(b){alert(b);function b(){alert(b);}b();}a(1);/*词法分析ao.b=und 1alert也算var 因为已存在不改b() ao.b=func b....运行期 依次alert,没有其他变化,所以两次alert都是func*/
function a(b){// alert(b);var b=1;function b(){alert(b);}b();}a(1);/*alert 改为var b=1词法分析期不变 运行期 赋值操作 把函数用1代替了 运行的话,会说b()不是function type 把alert放在1那行后面就能看到打印为1*/
function a(b){alert(b);b=function b(){alert(b);}b();}a(1);/*词法分析ao.b= 1 alert也算var 因为已存在不改只有这两行,没有函数运行期alert 1b= ... 赋值 b为函数 */
0 0
- javascript之词法分析
- javascript词法分析
- JavaScript词法分析过程
- javascript--词法分析
- javaScript词法分析
- 也谈javascript词法分析
- 再谈javascript的词法分析
- JAVASCRIPT作用域链,词法分析
- 2、JavaScript高级之词法分析
- javascript词法分析自己的个人理解。
- 实例分析 JavaScript 词法作用域
- 简述 JavaScript 作用域与词法分析
- 词法分析
- 词法分析
- 词法分析
- 词法分析
- 词法分析
- 词法分析
- 在stm32开发过程中常遇到的C语言知识小概括
- 架构-Docker
- IO_STACK_LOCATION与IRP的一点笔记
- C#(服务器)与Java(客户端)通过Socket传递对象
- C语言如何取一个数的负数
- javascript--词法分析
- Android平台调用WebService详解
- 自定义API
- PowerBuilder运行库以及ODBC接口
- Android组件及UI框架大全
- redis使用(四):C 同步接口
- 查看kernel的log
- 【树链剖分】[ZJOI2008][HYSBZ/BZOJ1036]树的统计Count
- Android 开源框架ActionBarSherlock