今天又在打代码

导航

JavaScript的执行步骤

  首先,第一步是预解析阶段,也可以叫做检查装载阶段,在这个阶段里面会检查js的语法错误,然后进行变量的提升和函数的声明,第二步是执行阶段,会进行变量的赋值和函数的调用,下面我们声明了一个函数,但是调用它的步骤放在了上面,再来看控制台的结果:

1     A()
2     function A() {
3         console.log('你好')
4     }    

  控制台会输出:

 

 

  在这个运行过程中,我们其实首先会将函数的整个声明提升到最前面,然后再执行调用,所以控制台不会报错,我们再给代码里添加点东西,在A函数里面添加一个aname = '小红' 输出也改为 console.log(name+‘你好’) 此时控制台也同样不会报错,首先依旧我们函数的声明会提升上去,而函数里面有个变量,虽然我们没有用var来定义,但是他会自动添加到全局变量里面,

 

 

 

这些步骤都是在我们调用这个函数之前发生的事情,所以不会出问题,但是如果我们将anma提取出来,放在函数的上面,那么控制台就会报错了,

 

 

 ok,说我们的aname没有定义,我们给他加上一个var以后控制台

 

这边的执行步骤是这样的,我们首先会把var uname 和function A(...)提取到最上面,但是此刻uname是没赋值的所以是undefined,那么这个函数A里面就是输出undefined了,我们再调用它那结果可想而知.

注意匿名函数必须要先声明再调用!

 

posted on 2020-06-12 16:07  今天又在打代码  阅读(613)  评论(0编辑  收藏  举报