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

js 激活/代码执行阶段 执行顺序!

2015-12-02 15:24 323 查看
function hello(){

console.log('aaa');

}

hello();

function hello(){

console.log('aaasdfasda');

}

hello();
两次均打印
aaasdfasda

------------------------------

console.log(hello);
function hello(){

console.log('aaasdfasda');

}

console.log(hello);
function hello(){

console.log('aaa');

}

console.log(hello);


三次都打印:
function hello(){

console.log('aaa');

}
一开始打印的是创建阶段,同名函数覆盖,所以打印funciton hell..aaa
后两个同样都打印aaa 可见代码执行阶段函数也不是顺序执行赋值


-------------------------------

按我理解 ,js在 激活/代码执行阶段 定义式的函数语句会被提取出来优先执行。函数定义执行完后,才会按顺序执行其他代码

也解释了为什么

(function(){
console.log(bar);
var bar = 20;
function bar(){ console.log("bar"); } console.log(bar); })()
打印:

function bar(){

console.log("bar");

}

20

在创建阶段(当函数被调用,但是开始执行函数内部代码之前)
阶段 激活对象 里 bar 是funciton bar.... 所以第一个打印的是bar方法

但是代码执行阶段,方法bar在var bar=20之后 按理说是会覆盖bar变量声明 第二个打印的也是方法,但是根据文章一开始的代码实验,应该是无论先后顺序,函数先执行,然后变量var bar =20 覆盖方法 function
bar()....
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: