转自:https://www.cnblogs.com/Jabin/p/5804052.html
如果想要对函数有更深刻的理解,或者正确认识函数!需要我们先做一件事,那就是了解js的运行机制问题:
1、在js中js引擎会优先解析var变量和function定义!在预解析完成后从上到下逐步进行!
2、解析var变量时,会把值存储在“执行环境”中,而不会去赋值,值是存储作用!例如:
alert(a); var a = 5; 这时会输出undifiend,意思是没有被初始化没有被赋值!
这并不是没有被定义,错误了的意思!
3、在解析function时会把函数整体定义,这也就解释了为什么在function定义函数时为什么可以先调用后声明了!其实表面上看是先调用了,其实在内部机制中第一步实行的是把以function方式定义的函数先声明了!