js的执行过程
2015-05-26 15:28
253 查看
其实这个执行过程很简单,但是为啥我还有写在博客里面呢,主要是为了找个地方做笔记,哈哈,生活在于开源,其实开放思想,share自己的想法也可以认为是开源。
好了,言归正传
当我们写好一个js文件后,想要成功的看到他的运行结果,这期间,经历了两个过程,这两个过程分别是预编译期和执行期,预编译期,做了什么事儿呢,对于变量来说,预编译期,会对带有 var 申明的变量进行一个初始化的过程,这里初始化是没有赋值的过程的哦,仅仅只是初始化,只有到了执行期,才会对这个变量进行赋值操作。那么对于函数来说呢,情况是这样的,在预编译期,实际上就已经对函数进行了定义,也就是已经把函数的定义加载到了内存中,当运行的时候,就可以直接调用,所以说,不管函数的调用是发生在函数定义之前还是之后,都可以正常运行,不会出现undefined的错误。下面我用代码来说明一下:
这段代码的运行结果是什么?
name=undefined
name=carl
那如果代码改称这样呢
结果又会是什么样的呢?
结果是
name=carl
name=carl,这是为什么呢,因为我们对name没有用var来申明,那么这个时候,这个name实际上是一个全局的属性,我们知道js里面属性是先于函数编译的,所以,当运行到函数的时候,name已经有了定义,并且进行了赋值,因为他是全局变量。
好了,言归正传
当我们写好一个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已经有了定义,并且进行了赋值,因为他是全局变量。
相关文章推荐
- jQuery.js执行过程分析
- js 的执行过程
- JS(八)预编译执行过程
- js的解析和执行过程
- JS 的解析与执行过程
- 关于js的callback回调函数以及嵌套回调函数的执行过程理解
- 你了解JS执行过程吗?
- js中的this关键字,setTimeout(),setInterval()的执行过程
- JS的解析与执行过程
- 认识DOM和DOM加载过程以及如何让DOM加载完成后再执行js脚本文件
- JS的解析与执行过程
- 对于HTML页面中CSS, JS, HTML的加载与执行过程的简单分析
- js 的执行过程
- iOS学习笔记28-JS执行过程分析
- vue.js中v-on:textInput无法执行事件问题的解决过程
- 数据可视化过程中遇到的json转换及js执行顺序问题
- js代码执行过程,js预编译,变量声明提升,函数体整体提升
- JS运行过程,作用域和上下文的作用,自执行函数
- JS,Javascript加载与函数执行过程
- js的解析与执行过程