JavaScript 变量声明提前
2024-08-27 04:10:19
《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();
运行结果如下:
最新文章
- SpringBoot配置属性之DataSource
- USACO Sorting a Three-Valued Sequence
- groovy-位运算
- C#控制鼠标位置
- C常用字符字符串处理函数
- SQL2008安装提示";Microsoft visual studio 2008早期之前的版本";解决(这是我认为最简单有效的方法)
- 文成小盆友python-num7 -常用模块补充 ,python 牛逼的面相对象
- Java—NumberFormat与DecimalFormat类
- [置顶] Spring中DI设置器注入
- .Net程序员学用Oracle系列(21):分组查询(GROUP BY)
- MySQL1-基础知识点
- AngularJS学习篇(二十三)
- Python 面向对象基础知识
- String类为什么要用final修饰(面试回答)
- $.parseJson()定义和用法
- 个人git链接和git学习心得总结
- 【转】一次SpringMVC+ Mybatis 配置多数据源经历
- springboot JPA
- Nginx 访问日志分析
- Android学习之Intent使用
热门文章
- Angularjs在控制器(controller.js)的js代码中使用过滤器($filter)格式化日期/时间实例
- linux创建进程fork的方法步骤
- OpenCascade B-Spline Basis Function
- Android调用系统相机功能
- SpringMVC+FreeMarker
- js操作label,给label赋值,和取label的值
- vc下的静态链接库与动态链接库(一)
- [c++] Callable Objects
- hibernate笔记--通过SchemaExport生成数据库表
- Kooboo CMS 无聊随笔(2)