JavaScript运行机制
2013-06-20 16:36
302 查看
一、运行顺序
1、 读入第一个JavaScript代码段
注:JavaScript执行引擎并非一行一行地执行程序,而是一段一段地分析执行的(以<\script\>标签来分割)
2、 做语法分析,如果遇到错误,则报语法错误,停止该段代码运行,并跳转到步骤5
3、 对var变量做声明(初始为undefined),对function定义做“预解析”
注: 不会报出任何错误和停止运行,因为只解析正确的声明
4、 执行JavaScript代码段,如果遇到错误,则报出运行错误,停止该段代码执行,并跳转到步骤5
5、 如果还有下一个代码段,则读入下一个代码段,重复步骤2
6、执行完成
二、JavaScript运行图
三、结合例子分析
alert(testNum);
alert('ok');
testNum = 2;
//testNum未声明,执行报错。
alert(testNum); alert('ok'); testNum = 2; //testNum未声明,执行报错。
alert(testNum);
alert('ok');
var testNum = 2;
//弹出undefined和ok。预编译的时候,声明了变量t;执行到alert(t)这行代码的时候,t尚未被赋值,所以弹出undefined。
alert(testNum); alert('ok'); var testNum = 2; //弹出undefined和ok。预编译的时候,声明了变量t;执行到alert(t)这行代码的时候,t尚未被赋值,所以弹出undefined。
testFunc();
function testFunc() {}
alert('ok');
//弹出ok。预编译的时候,解析了定义式函数语句function testFunc() {},顺利执行。
testFunc(); function testFunc() {} alert('ok'); //弹出ok。预编译的时候,解析了定义式函数语句function testFunc() {},顺利执行。
testFunc();
var testFunc = function() {};
alert('ok');
//testFunc不是函数,执行报错。预编译的时候,声明了变量testFunc = undefined;执行到testFunc()时,testFunc还等于undefined,不是函数,所以执行testFunc()会报错。
testFunc(); var testFunc = function() {}; alert('ok'); //testFunc不是函数,执行报错。预编译的时候,声明了变量testFunc = undefined;执行到testFunc()时,testFunc还等于undefined,不是函数,所以执行testFunc()会报错。
<\script type="text/javascript">
testFunc();
alert('first block');
<!--\script-->
<\script type="text/javascript">
alert('second block');
<!--\script-->
//弹出second block。因为JS是一段一段执行的,第一段执行到testFunc()的时候报错,整个第一段都不会再执行,第二段正常执行。
1、 读入第一个JavaScript代码段
注:JavaScript执行引擎并非一行一行地执行程序,而是一段一段地分析执行的(以<\script\>标签来分割)
2、 做语法分析,如果遇到错误,则报语法错误,停止该段代码运行,并跳转到步骤5
3、 对var变量做声明(初始为undefined),对function定义做“预解析”
注: 不会报出任何错误和停止运行,因为只解析正确的声明
4、 执行JavaScript代码段,如果遇到错误,则报出运行错误,停止该段代码执行,并跳转到步骤5
5、 如果还有下一个代码段,则读入下一个代码段,重复步骤2
6、执行完成
二、JavaScript运行图
三、结合例子分析
alert(testNum);
alert('ok');
testNum = 2;
//testNum未声明,执行报错。
alert(testNum); alert('ok'); testNum = 2; //testNum未声明,执行报错。
alert(testNum);
alert('ok');
var testNum = 2;
//弹出undefined和ok。预编译的时候,声明了变量t;执行到alert(t)这行代码的时候,t尚未被赋值,所以弹出undefined。
alert(testNum); alert('ok'); var testNum = 2; //弹出undefined和ok。预编译的时候,声明了变量t;执行到alert(t)这行代码的时候,t尚未被赋值,所以弹出undefined。
testFunc();
function testFunc() {}
alert('ok');
//弹出ok。预编译的时候,解析了定义式函数语句function testFunc() {},顺利执行。
testFunc(); function testFunc() {} alert('ok'); //弹出ok。预编译的时候,解析了定义式函数语句function testFunc() {},顺利执行。
testFunc();
var testFunc = function() {};
alert('ok');
//testFunc不是函数,执行报错。预编译的时候,声明了变量testFunc = undefined;执行到testFunc()时,testFunc还等于undefined,不是函数,所以执行testFunc()会报错。
testFunc(); var testFunc = function() {}; alert('ok'); //testFunc不是函数,执行报错。预编译的时候,声明了变量testFunc = undefined;执行到testFunc()时,testFunc还等于undefined,不是函数,所以执行testFunc()会报错。
<\script type="text/javascript">
testFunc();
alert('first block');
<!--\script-->
<\script type="text/javascript">
alert('second block');
<!--\script-->
//弹出second block。因为JS是一段一段执行的,第一段执行到testFunc()的时候报错,整个第一段都不会再执行,第二段正常执行。
相关文章推荐
- JavaScript 运行机制详解:再谈Event Loop
- 也谈JavaScript运行机制
- Function 对象,javascript中双括号的运行机制
- javascript运行机制之执行顺序详解
- JavaScript 运行机制详解:再谈Event Loop
- JavaScript 运行机制详解:再谈Event Loop
- JavaScript 运行机制详解:Event Loop
- JavaScript运行机制浅探
- JavaScript运行机制浅探
- 【朴灵评注】JavaScript 运行机制详解:再谈Event Loop
- javascript运行机制之执行顺序详解
- JavaScript教程:浅析JS运行机制
- 深入理解JavaScript运行机制
- javascript运行机制之执行顺序详解
- javascript的运行机制
- JavaScript 运行机制详解:再谈Event Loop
- javascript的预解析与运行机制
- JavaScript 运行机制详解:再谈Event Loop
- Javascript运行环境异步机制
- 【朴灵评注】JavaScript 运行机制详解:再谈Event Loop