js的执行过程

其实这个执行过程很简单,但是为啥我还有写在博客里面呢,主要是为了找个地方做笔记,哈哈,生活在于开源,其实开放思想,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已经有了定义,并且进行了赋值,因为他是全局变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值