javascript基础有关----javascript的执行过程
2012-06-29 16:24
113 查看
作为一个半路出家的菜鸟,对一些基础知识的了解不是很到位,感觉似懂非懂,雾里看花
等到用的时候就要调试一会才能找到正确的使用方法,但是有时候是没有调试的机会的,比如说去公司面试的时候做笔试题。
前段时间去一家公司面试,结果可想而知了。。。
废话说到这里,下面就记录一些最近去了解的一些基础。
一、javascript的执行过程
看这么道题吧:
不卖官子,结果是:3,0,1,1
这里就是JS的一个执行过程的问题,当页面加载的时候会逐块读入script里的代码,然后进行一个预编译的工作,确定没有语法错误才会进行后续的执行工作。
在预编译的时候会将var声明的变量以及function提到代码的最前端(当然我们是看不到的),经过预编译完了的代码就可以理解成这样:
另外就是var声明变量的时候不受if等一些判断语句的影响,即使执行的时候不会执行的代码里的var也会在预编译的时候提前。
例子:
这的结果是undefined,然后会报错,1是不会弹出来的,然后会再弹出2。。充分说明了var不受条件语句的影响,这个例子也可以看得出来JS是按块来执行。
总而言之,JS在执行的时候这样滴:
1.读入一块JS代码段(可以理解为一段在script标签里的代码)
2.预编译(检查有没语法错误),说的通俗点就是将一些function与var等关键字声明放到最前面
3.如果没有语法错误,再执行代码,否则直接读入下一块代码段后跳至第2步骤
4.上一段代码执行过程中出现错误后不再向下执行,直接读入下一块代码段然后跳至第2步骤,直到所有代码执行完毕。
补充:
关于var这个的意思一直以来我也没搞清楚,查了查资料,应该只是告诉浏览器有这么个东西存在,分配一个内存空间给他,但是并没有任何内容,预编译的时候应该就是做这些事吧。在赋值操作以后才会有东西存在其中,由于一般我们都是var str = '',这样连着写,于是就忽略了这其中其实还是另有天地的。
第一部分就这样吧,想起来再回来补充,后面的部分会相继记录下来。
等到用的时候就要调试一会才能找到正确的使用方法,但是有时候是没有调试的机会的,比如说去公司面试的时候做笔试题。
前段时间去一家公司面试,结果可想而知了。。。
废话说到这里,下面就记录一些最近去了解的一些基础。
一、javascript的执行过程
看这么道题吧:
<script type="text/javascript"> function x(){alert(2)}; x(); var x = function(){alert(0)}; x(); var x = function(){alert(1)}; x(); function x(){alert(3)}; x(); </script>
不卖官子,结果是:3,0,1,1
这里就是JS的一个执行过程的问题,当页面加载的时候会逐块读入script里的代码,然后进行一个预编译的工作,确定没有语法错误才会进行后续的执行工作。
在预编译的时候会将var声明的变量以及function提到代码的最前端(当然我们是看不到的),经过预编译完了的代码就可以理解成这样:
<script type="text/javascript"> function x(){alert(2)}; function x(){alert(3)}; var x; x(); x = function(){alert(0)}; x(); x = function(){alert(1)}; x(); x(); </script>
另外就是var声明变量的时候不受if等一些判断语句的影响,即使执行的时候不会执行的代码里的var也会在预编译的时候提前。
例子:
<script> if(false){ var a = 1; } alert(a) alert(b) alert(1) </script> <script> alert(2) </script>
这的结果是undefined,然后会报错,1是不会弹出来的,然后会再弹出2。。充分说明了var不受条件语句的影响,这个例子也可以看得出来JS是按块来执行。
总而言之,JS在执行的时候这样滴:
1.读入一块JS代码段(可以理解为一段在script标签里的代码)
2.预编译(检查有没语法错误),说的通俗点就是将一些function与var等关键字声明放到最前面
3.如果没有语法错误,再执行代码,否则直接读入下一块代码段后跳至第2步骤
4.上一段代码执行过程中出现错误后不再向下执行,直接读入下一块代码段然后跳至第2步骤,直到所有代码执行完毕。
补充:
关于var这个的意思一直以来我也没搞清楚,查了查资料,应该只是告诉浏览器有这么个东西存在,分配一个内存空间给他,但是并没有任何内容,预编译的时候应该就是做这些事吧。在赋值操作以后才会有东西存在其中,由于一般我们都是var str = '',这样连着写,于是就忽略了这其中其实还是另有天地的。
第一部分就这样吧,想起来再回来补充,后面的部分会相继记录下来。
相关文章推荐
- Testacular:Google开源的JavaScript测试执行过程管理工具
- javascript的执行过程, 语法错误和运行时错误?
- MSQL优化基础(SQL执行过程,链接方式案例)
- Testacular:Google开源的JavaScript测试执行过程管理工具
- Javascript的执行过程详细研究
- Javascript基础_12深入理解javascript中的立即执行函数(function(){…})()
- Javascript的执行过程详细研究
- 初识JavaScript的解析与执行过程
- 深入剖析MFC基础框架——跟踪MFC单文档程序的执行过程:
- Javascript的执行过程详细研究
- JavaScript执行window.onload和body onload多个处理过程的方法
- JavaScript执行多个处理过程的方法
- 由希尔排序算法实现引起的for循环执行过程及i++和++i异同的提问——打打基础
- Javascript的执行过程详细研究
- javascript基础进阶——执行环境及作用域链
- JavaScript基础之匿名立即执行函数
- Spark学习 基础函数功能详细说明 附代码和执行过程 上机学习详细说明
- 用JavaScript事件串连执行多个处理过程的方法
- Javascript基础复习 程序执行之生命周期
- javascript代码解释执行过程