您的位置:首页 > Web前端 > JavaScript

也谈JavaScript运行机制

2010-10-12 20:46 323 查看
最近被JavaScript的跨域问题和兼容性问题弄得焦头烂额,于是急忙抽抽时间复习复习JavaScript基础,这里就说说我对JavaScript运行机制的一些见解。

JavaScript不同于现时的c#,Java等编译性语言,得写好源代码后,运行编译程序进行编译成字节码(java),clr等接近汇编的语言,老麻烦了,而且像Java和c#还不能脱离他的虚拟机运行呢。但是JavaScript只要编写好,下一秒就能在浏览器运行,非常方便快捷,因为JavaScript是解释性语言,是运行的时候动态解析执行的。

也许你会说,既然是逐行解析运行的,就没有必要说什么见解啦,多简单哦!!其实不然,所谓的逐行解析只是形象的说法,任何语言运行之前,都要免不了词法,语法的解析,解析失败是会报错的。但是可能大家会疑问,很多情况,浏览许多网站的时候,浏览器都会报JavaScript脚本错误,为什么JavaScript的函数还能运行呢?其实它运行成功的是那些没有错误的JavaScript函数而已,而且JavaScript加载编译的时候,是以<script>遵守document加载html节点树形加载的,所以是先加载的<Script>是会先运行的,但是在<script>标签里面,但JavaScript遇到编译错误的代码行的时候就会报错跳出这段<script>,所以之前没有跳出<script>的时候加载的代码段因为已经加载到document里面,所以是可以运行的:

代码

<scrirpt type="text/javascript">
alert(test);//没有定义test,所以出错,下面的不能运行
var test = "test";
alert(test);//这里不能运行
</script>
<--!接着下一段JavaScript代码-->
<scrirpt type="text/javascript">
var test = "test";
alert(test);//可以运行,不受上一段JavaScript影响
</script>


所以到这里,JavaScript的运行机制就很明朗啦,自上而下的加载解析到document,遇到词法错误,语法错误,会跳出本段<script>标签,但是还会继续加载随后的<script>标签的JavaScript代码,如此循环,直到document加载完毕(完)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: