易截截图软件、单文件、免安装、纯绿色、仅160KB

javascript 运行机制

以下全是个人理解以及网上查找而来,如有不对请指正...
假如有n段js代码 用<script>标签隔开的.
运行顺序是
step1. 读入第一个代码段
step2. 做语法分析,有错则报语法错误(比如括号不匹配等),并跳转到step5
step3. 对var变量和function定义做“预解析”(永远不会报错的,因为只解析正确的声明)
step4. 执行代码段,有错则报错(比如变量未定义)
step5. 如果还有下一个代码段,则读入下一个代码段,重复step2
step6. 结束
这些是从网上找到的  至于对错  真的不知道如何验证,就暂时当它是正确的.........
js是解释型语言,通过词法分析和语法分析得到语法树后,就可以开始解释执行了。(语法分析 ,词法分析这个我也没研究过)
另外还有一些概念  如预编译
1. 在执行前会进行类似“预编译”的操作:首先会创建一个当前执行环境下的活动对象,并将那些用var申明的变量设置为活动对象的属性,但是此时这些变量的赋值都是undefined,并将那些以function定义的函数也添加为活动对象的属性,而且它们的值正是函数的定义。
2.在解释执行阶段,遇到变量需要解析时,会首先从当前执行环境的活动对象中查找,如果没有找到而且该执行环境的拥有者有prototype属性时则会从prototype链中查找,否则将会按照作用域链查找。遇到var a = ...这样的语句时会给相应的变量进行赋值(注意:变量的赋值是在解释执行阶段完成的,如果在这之前使用变量,它的值会是undefined)
预编译应该在上面的哪个阶段开始执行了
我觉得应该是step3    因为是类似“预编译”,实际上是已经开始执行了.所以应该是 3;
可以看一下下面的例子
<script>
alert(i);
</script>
会报告错误 提示i未定义
<script>
alert(i);
var i=1;
</script>
会谈出undefine
不会报告错误  跟预定义的解释一样...........
还有就是在解析的时候 有个先后顺序  那就是先解析函数 在解析变量
且 函数的作用域是在定义的时候,而不是执行时候的作用域
一个例子
<script>
var c = "123";
function xx(){
 alert(c);
 var c="xx";
}
xx()
</script>
出现的是undefined
因为先解析的xx  所以是找不到c的
又因为编译的关系,知道了在 xx()内部有一个c变量,所以会有一个undefined的直
在运行xx()的时候  因为有undefined的直就弹


相关文档:

JavaScript动态调整图片尺寸

在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。
我前段时间写的一篇文章就遇到过这种事情,后来用CSS的overflow和max-width属性暂时解决了页面变形的问题。这种方法好处是简单,但坏处是会破坏某些细节的效果。
如overflow:hidden ......

[JAVASCRIPT] this 对象

看了很多javascrip代码,发现很多地方用到了this这个对象,那这个到底是什么东西阿?
先让我们来理解一个概念:
在javascript会有一个上下文的概念,任何一个对象无论是Object 还是function 都会有一个专有的上下文对象,也可以理解为它自己的拥有者。
那么我们很容易想到这个拥有者,必然有个终点,那就是window对象。 ......

JavaScript入门与其框架JQuery,JSON和XML的比较

当页面载入时,会执行位于 body 部分的 JavaScript。
当被调用时,位于 head 部分的 JavaScript 才会被执行。
2006年1月14日,John Resig 在BarCampNYC上第一次发布了jQuery。
 
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript(St ......

JavaScript贪吃蛇

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>贪食蛇</title></head>
<body>
<mce:style type="text/css"><!--
.tab ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号