解释一下啥叫预解析(自己起的名),希望给一些初学js的提供些帮助,如不对,请指正,别误导大家

coglass 2012-11-23 12:01:05
大概说说js的解析顺序,js引擎读取一段js代码,首先预解析(这个名字我起的),就是逐行读取js代码,寻找全局变量和全局函数,遇到全局变量,把变量的值变为undefind,存在内存中,遇到全局函数,直接存在内存中,这个过程如果发现语法错误,预解析终止。
我们平时遇到这种情况:
alert(a)
var a=100
这个弹出undefind,而不是没有这个变量的语法错误,就是因为预解析时候把a调成了undefind存在内存中,
还有下面我们之所以可以先调用f1,后定义f1函数,也是因为预解析,f1已经存在内存中。
f1()
function f1(){ return 123}

当预解析完成后,js引擎在从第一行开始逐行运行js代码。
知道这个对于理解函数作用域能提供些帮助。
...全文
349 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
plzzz 2012-11-23
  • 打赏
  • 举报
回复
忘记在哪里看过了,大概就是 编译器 会将所有的 变量声明 移到 函数 的顶部,
  • 打赏
  • 举报
回复
受教!

87,995

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧