JavaScript代码执行顺序

JS代码执行过程分为以下两个步骤:
      1.预处理过程
      2.代码执行

       预处理过程主要是跳过执行语句,先按顺序处理声明语句。即使声明是在调用的下方进行的,仍然先声明再调用(执行),这个现象叫做“提升”。
       预处理过程完成后为执行代码阶段,按顺序执行代码。
以下面这段代码为例:

var a = 1;    //声明a为全局变量
function func(){
   console.log(a);       //打印a的值
   var a = 2;            //a为局部变量
   console.log(a);
}
func();

       以上这段代码第一次打印结果为undefined,第二次打印结果为2。
       以上代码在处理过程中,首先会定义变量a和声明函数声明函数func()。对于变量a,只定义不赋值,则此时a的默认值为undefined。预处理完之后执行代码,第一次打印出a的值是undefined,虽然在函数中代码执行前有执行语句a=1,但要注意的是这个a是全局变量,而函数内部定义了局部变量a,此时函数内a的值仍是undefined。第二次打印出a的值为2,因为在第二次打印前执行了a=2,完成了对局部变量a的赋值。


       在预处理阶段,对于函数声明,有一种情况是重复函数的声明。这种情况函数的内容是最后一次声明函数的内容。
以下面这段代码为例:

function Hello() {
   alert("Hello");
}

Hello();

function Hello() {
   alert("Hello World");
}

Hello();

以上代码,输出两次结果都为:Hello World 。
执行过程如下:

function Hello() {
   alert("Hello");
}

function Hello() {
   alert("Hello World");
}

Hello();
Hello();

参考文档http://shaozhuqing.com/?p=2756

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值