javascript的词法分析
-.arguments的解释:
1.是一个对象,是一个长的很像数组的对象
二.arguments内容是什么?
1.arguments是函数运行时的实参列表
2.arguments收集的“所有”的实参,即使没有与之相对应的形参,也可以用arguments来获取任意多个的实参
3.形参与对应的arguments单元,其实是相互映射的,互相影响
4.arguments可以获取函数运行时,收到的实参个数(在多态里可以用到)
5.arguments.callee 属性代表 “当前运行的函数”
三:函数运行期内,关键的三个对象
1.AO---》本函数A上没有某属相,则继续去外层函数的AO上找,直到全局对象 叫做 作用域链
2.anguments---》 每个函数有自己的callee,但不向外层接着找 arguments 的相关属性, 即不形成链
3.this的意思:
1.作为普通的函数来调用 this的值指向--》window 准确的说,this为null 解释成window 在新的标准中this为null 则解释成undefine
2.作为对象的方法来调用 this指向方法的调用者,即该对象 作为方法调用时,this指向其调用者,即母体对象
四:js中函数的4种调用状态:
1.作为普通函数来调用, 准确的说this 为null,但被解释成windows 在后来的标准中,如果this为null 则解释为undefine
2.作为对象的方法来调用: this指向方法的调用者,即该对象 作为方法调用时,this指向其调用者,即母体对象
3.函数作为构造函数调用时: js中没有类的概念 创建对象是用构造函数来完成,或者直接用json格式{}来写对象
函数作为构造函数运行时,return 的值是忽略的,还是返回对象。
4.函数通过call,apply 调用: 语法格式:函数.call(对象,参数1,参数2。。。参数N);
fn.call(对象obj,参数1,参数2,。。。参数N);
运行如下:
a):fn函数中的this--指向---》对象obj
b):运行fn(参数1,参数2,。。参数N);
五: var的定义:是函数运行的上下文中,声明的一个变量。不加var 就是一个赋值操作
六:词法分析的过程:
0:AO={}
1:分析参数 AO={greet:undefined}
2:分析var声明 (变量) greet变量声明,AO已经有greet属性,因此不做任何影响
3:分析greet函数声明,AO.greet=function(){},被覆盖成函数
七:函数能使用的局部变量,分析3样东西
1.先分析参数
2.再分析变量声明
3.分析函数声明
八:具体步骤:
0:函数运行前的1瞬间,生成Active Object(活动对象),下称AO
1: 1.1函数声明的参数,形成AO的属性,值全是undefined
1.2接受实参,形成AO相应额属相值
2:分析变量声明 如var age
如果AO上没有age 属性,则添加AO属相,值是undefined
如果AO上已经有age属相,则不作任何影响
3:分析函数声明 ,如 function foo(){},
则把函数赋给AO.foo属性 注:如果以前foo属性以存在,则被无情的覆盖了
九:function t1(){}和 t2=function(){}的区别:
1.这两种方式,效果不同
2. t1是函数声明,虽然全局内也得到一个t1变量,值是function
3.而t2只是一个赋值过程-----值是右侧的表达式的返回结果,即函数
4.因此,t1 t2两种方式在词法分析时,有着本质区别 前者 在词法分析阶段,就发挥作用, 后者在运行阶段才发挥作用
十:作用域链:函数由内到外 所产生的AO
javascript的词法分析的更多相关文章
- 深入JavaScript:词法分析、连续赋值猜想
JavaScript:词法分析.连续赋值猜想 原创文章,转摘请注明出处:苏福:http://www.cnblogs.com/susufufu/p/5851642.html 深夜发文,先吐槽下博客园的编 ...
- 前端——JavaScript
何谓JavaScript?它与Java有什么关系? JavaScript与HTML.CSS组合使用应用于前端开发,JavaScript是一门独立的语言,浏览器内置了JS的解释器.它除了和Java名字长 ...
- 前端基础 之JS
浏览目录 JavaScript语法基础 JavaScript数据类型及类型查询 JavaScript运算符 JavaScript流程控制 JavaScript函数 词法分析 JavaScript内置对 ...
- javascript --- 再谈词法分析
javascript代码是如何执行的呢,分为六个步骤(就像把大象装进冰箱总共分几步?): 第一步:载入第一个js代码段(注:script标签对内的代码或是引用js代码,这也说明js并不是一行一行(单纯 ...
- javascript --- 词法分析
JavaScript代码自上而下执行,但是在js代码执行前,会首先进行词法分析,所以事实上,js运行要分为词法分析和执行两个阶段. 词法分析主要分为三步: 第一步: 分析形参: 第二步: 分析变量声明 ...
- Javascript 笔记与总结(1-2)词法分析
词法分析,按顺序分析 3 样: 第 1 步:先分析参数 第 2 步:再分析变量声明 第 3 步:再分析函数声明 一个函数能使用的局部变量,就从上面 3 步分析而来. 具体步骤: 0:函数运行前的瞬间, ...
- 浅谈JavaScript词法分析步骤
JavaScript代码运行前有一个类似编译的过程即词法分析,词法分析主要有三个步骤: 分析参数 再分析变量的声明 分析函数声明 具体步骤如下: 函数在运行的瞬间,生成一个活动对象(Active Ob ...
- javascript中的词法分析
词法分析 JavaScript中在调用函数的那一瞬间,会先进行词法分析. 词法分析的过程: 当函数调用的前一瞬间,会先形成一个激活对象:Avtive Object(AO),并会分析以下3个方面: 1: ...
- JavaScript之函数,词法分析,内置对象和方法
函数 函数定义 JavaScript中的函数和Python中的非常类似,只是定义方式有点区别. // 普通函数定义 function f1() { console.log("Hello wo ...
随机推荐
- MATLAB画ROC曲线,及计算AUC值
根据决策值和真实标签画ROC曲线,同时计算AUC的值 步骤: 根据决策值和真实标签画ROC曲线,同时计算AUC的值: 计算算法的决策函数值deci 根据决策函数值deci对真实标签y进行降序排序,得到 ...
- C语言实现统计字符个数
#include<stdio.h> int main() { int sz[10]={0},zm[26]={0},z[26]={0},i,space=0,e=0,t=0; ...
- 有一种感动叫ACM(记WJMZBMR在成都赛区开幕式上的讲话)
各位选手,各位教练,大家好,我是来自清华大学交叉信息学院的陈立杰,今天很荣幸站在这里代表全体参赛选手发言.对于我来说,这是我第一次正式参加ACM的比赛.不过我跟ACM之间的缘分,大概在很早的时候就已经 ...
- Objective-C(面向对象的三大特性)
封装 set方法 作用:提供一个方法给外界设置成员变量值,可以在方法里面进行过滤 命名规范 1. 方法名必须以set开头 2. set后面跟上成员变量的名称,成员变量的首字母必须大写 3. 返回值一定 ...
- [转]何时使用委托而不使用接口(C# 编程指南)
以下内容转自MSDN:http://msdn.microsoft.com/zh-cn/library/ms173173.aspx 委托和接口都允许类设计器分离类型声明和实现. 任何类或结构都能继承和实 ...
- Google Chrome 源码下载地址 (Google Chrome Source Code Download)
1. Google Chrome 源码 SVN 地址:http://src.chromium.org/svn.包含有 Chrome.Gears.Webkit.GCC 等源码以及编译依赖工具.Chrom ...
- TreeList用法(1)
本人按照网上搜的一些小用法整理的: 如果要出现左边的效果,代码如下: public DataTable CreateDataTable() { DataTable ...
- hdu 4605 Magic Ball Game
http://acm.hdu.edu.cn/showproblem.php?pid=4605 可以离线求解 把所以可能出现的 magic ball 放在一个数组里(去重),从小到大排列 先不考虑特殊 ...
- 关于jquery html()方法获取带有OBJECT标签的元素内容时,出现“类型不匹配。”的解决办法
关于jquery html()方法获取带有OBJECT标签的元素内容时,出现“类型不匹配.”的解决办法 解决办法: $("selector").clone().html()
- Android Phonebook编写联系人UI加载及联系人保存流程(五)
2014-01-07 10:46:30 将百度空间里的东西移过来. 在前面的文章中我们分析了UI的加载,其中提到了一个重要的对象:RawContactDeltaList mState,我前面说过这个对 ...