卡大神的博客

其实这个执行过程很简单,但是为啥我还有写在博客里面呢,主要是为了找个地方做笔记,哈哈,生活在于开源,其实开放思想,share自己的想法也可以认为是开源。 好了,言归正传 当我们写好一个js文件后,,想要成功的看到他的运行结果,这期间,经历了两个过程,这两个过程分别是预编译期和执行期,预编译期,做了什么事儿呢,对于变量来说,预编译期,会对带有 var 申明的变量进行一个初始化的过程,这里初始化是没有赋值的过程的哦,仅仅只是初始化,只有到了执行期,才会对这个变量进行赋值操作。那么对于函数来说呢,情况是这样的,在预编译期,实际上就已经对函数进行了定义,也就是已经把函数的定义加载到了内存中,当运行的时候,就可以直接调用,所以说,不管函数的调用是发生在函数定义之前还是之后,都可以正常运行,不会出现undefined的错误。下面我用代码来说明一下:

function fun() {console.log(“name=” + name);var name = “carl”;console.log(“name=” + name);}fun();

这段代码的运行结果是什么? name=undefined name=carl 那如果代码改称这样呢

function fun() {console.log(“name=” + name);name = “carl”;console.log(“name=” + name);}fun();

结果又会是什么样的呢? 结果是 name=carl name=carl,这是为什么呢,因为我们对name没有用var来申明,那么这个时候,这个name实际上是一个全局的属性,我们知道js里面属性是先于函数编译的,所以,当运行到函数的时候,name已经有了定义,并且进行了赋值,因为他是全局变量。

一切都在发展变化,不断地向昨天告别,满怀信心地投入每一个崭新的今天。

卡大神的博客

相关文章:

你感兴趣的文章:

标签云: