作用域:
变量还有函数作用的范围。
浏览器的内核主要有两大功能,一个是渲染页面,另一个就是我们的JavaScript的解释器了。

我们主要来说说JavaScript解释器,在解析时是怎么样的工作原理。

在解析的时候,首先会发生预解析,就是说不会直接一行一行去执行我们所写的代码,它会先去找有哪些声明的变量,遇见函数体的时候会把函数放到最上面的位置,当变量名和函数名重名的时候函数会替代变量声明。
在解析的时候碰到的是个函数体,那么会预先处理函数体中的变量或者函数,知道有哪些声明的事项。
如果是变量,那么在函数体中调用变量时,会取函数体当中的变量,如果函数体中没有,则找外层变量

函数预解析:
  会将函数提到顶部
变量预解析:
  会内部事先知道是否有该变量,但不会改变解析位置

  当预解析时,变量和函数出现同名时,函数会替代掉变量,同一个命名只会存在一个

全局作用域 - 在任何地方都能访问
  函数外定义的变量拥有全局作用域
  不使用var定义的变量拥有全局作用域
  所有window对象上的属性拥有全局作用域
局部作用域 - 只能在函数内部访问
  使用var在函数内部定义的变量拥有局部作用域

全局:在任何地方都能调用
局部:只在当前作用范围(功能体)能调用

 <script>
var a = 10;// 全局
function fn() {
console.log(a);//undefined
var a = 5;// 局部
console.log(a);//
}
fn(); </script>

闭包的概念
  函数嵌套函数,内层函数可以访问外层函数中的变量

 <script>
function fn1() {
var a = 1;
function fn2() {
a++;
console.log(a);
       return a;
}
fn2();
}
fn1();
</script>

闭包的做大用处有两个:

一个是在函数体外部读取i内部的变量,另一个就是让这些变量始终保存在内存中。

最新文章

  1. C#调用win32 api 操作其它窗口
  2. 解决ADB server didn&#39;t ACK问题,连上手机问题
  3. CentOS进程管理
  4. html5+监听设备加速度变化信息
  5. [转]Hibernate3如何解决n+1 selects
  6. 防范ARP网关欺骗, ip mac双向绑定脚本
  7. [NOIP2013]转圈游戏
  8. 多路复用的server模型
  9. Linux 动态库剖析
  10. .NET面向对象特性之“继承”
  11. try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后?
  12. 有关于二分搜索的常见问题(java实现)
  13. 如何理解Python装饰器
  14. Perl IO:操作系统层次的IO
  15. 【转载】ASP.NET实现文件下载的功能
  16. 剑指Offer_编程题_11
  17. SVN——Couldn&#39;t perform atomic initialization
  18. fiddler对安卓APP进行抓包
  19. ubuntu安装五笔输入法(ibus-table-wubi)
  20. 【Swift实现代码】iOS架构模式之MVP

热门文章

  1. Servlet的生命周期及工作原理
  2. 了解AIDL
  3. css3深入了解之奇技淫巧
  4. 自定义 bundle 包的创建
  5. android Animation介绍
  6. 做JavaWeb开发不知Java集合类不如归家种地
  7. Play Framework 完整实现一个APP(十三)
  8. MySql踩坑总结
  9. how2heap分析系列:2_fastbin_dup
  10. 初入网络系列笔记(5)FTP协议