《JavaScript权威指南》中指出:JavaScript变量在声明之前已经可用,JavaScript的这个特性被非正式的称为声明提前(hoisting),即JavaScript函数中声明的所有变量(但不涉及赋值)都被“提前”至函数的顶部。下面我们从实例中看看:

实例1:

    var aa = "test";
function myFunc(){
console.log('aa值为:'+aa);
var aa = "TEST";
}
myFunc();

调用函数myFunc() 打印的结果为 undefined ,因为函数作用域的特性,函数中申明的变量(但不涉及赋值)被“提前”至函数的顶部,所以局部变量在整个函数体始终有效,局部变量aa会覆盖掉全局变量aa,因此打印的结果为 undefined ,其运行过程等价于实例2,如下:

实例2 :

    var aa = "test";
function myFunc(){
var aa;
console.log('aa值为:'+aa);
aa = "TEST";
}
myFunc();

运行结果如下:

最新文章

  1. SpringBoot配置属性之DataSource
  2. USACO Sorting a Three-Valued Sequence
  3. groovy-位运算
  4. C#控制鼠标位置
  5. C常用字符字符串处理函数
  6. SQL2008安装提示"Microsoft visual studio 2008早期之前的版本"解决(这是我认为最简单有效的方法)
  7. 文成小盆友python-num7 -常用模块补充 ,python 牛逼的面相对象
  8. Java—NumberFormat与DecimalFormat类
  9. [置顶] Spring中DI设置器注入
  10. .Net程序员学用Oracle系列(21):分组查询(GROUP BY)
  11. MySQL1-基础知识点
  12. AngularJS学习篇(二十三)
  13. Python 面向对象基础知识
  14. String类为什么要用final修饰(面试回答)
  15. $.parseJson()定义和用法
  16. 个人git链接和git学习心得总结
  17. 【转】一次SpringMVC+ Mybatis 配置多数据源经历
  18. springboot JPA
  19. Nginx 访问日志分析
  20. Android学习之Intent使用

热门文章

  1. Angularjs在控制器(controller.js)的js代码中使用过滤器($filter)格式化日期/时间实例
  2. linux创建进程fork的方法步骤
  3. OpenCascade B-Spline Basis Function
  4. Android调用系统相机功能
  5. SpringMVC+FreeMarker
  6. js操作label,给label赋值,和取label的值
  7. vc下的静态链接库与动态链接库(一)
  8. [c++] Callable Objects
  9. hibernate笔记--通过SchemaExport生成数据库表
  10. Kooboo CMS 无聊随笔(2)