js语法分析【 var 变量=】 这种正则 解析为赋值 可以直接采用变量名访问 创建GO或AO对象 都是赋值undefined
【 变量=】正则,范围升级为GO,即使在函数内部,赋值为undefined,访问需要采用window前缀。
//伪代码 GO/window = { //页面加载创建GO同时,创建了document、navigator、screen等等属性,没用采用var前缀的都需要使用属性方式访问,不然出现 //未定义错误,如果严格执行,这种不用var的根本不会通过。【变量=函数体】等同以上正则 c: undefined, f: undefined }-------------------------第二步:将实参映射到形参
-------------------------
第三步:函数体表达式作为值对以上形成的key-value进行同名覆盖
如上没有同名函数在GO阶段省略
------------------------
第四步:逐行执行表达式。
以上从上往下执行,
当到
c(88)时,进行AO创建,同样是以上四步,主要是在映射实参时比GO阶段多了一步。
执行结果:
undefined undefined function c() 88 全局以变量赋值形式声明的函数100 100以上主要在var a 在函数内部声明与形参形成同名关联造成值同步。
参考文章:
http://www.pianshen.com/article/200070261/
