JavaScript变量声明提升
2016-01-27 10:09
323 查看
首先先看几段代码:
1:
a = 2;
var a;
console.log(a); // 2
2:
console.log(b);
var b = 2; //undefined
3:
c = 2;
console.log(c);
var c; //2
为什么会这样呢?
编译阶段的一部分工作就是找到所有的声明(这里的声明是指定义声明,赋值声明不会被提升),用合适的作用域把它们关联起来。举个栗子:第二段代码中 var b = 2 —>
var b; b = 2;
这里 var b ;
会被提升,而b =2;是赋值声明,不会提升,会在原地等待执行阶段 。
困扰了我好久的问题终于搞懂了orz
更多请移步《你不知道的JavaScript》一书
1:
a = 2;
var a;
console.log(a); // 2
2:
console.log(b);
var b = 2; //undefined
3:
c = 2;
console.log(c);
var c; //2
为什么会这样呢?
编译阶段的一部分工作就是找到所有的声明(这里的声明是指定义声明,赋值声明不会被提升),用合适的作用域把它们关联起来。举个栗子:第二段代码中 var b = 2 —>
var b; b = 2;
这里 var b ;
会被提升,而b =2;是赋值声明,不会提升,会在原地等待执行阶段 。
困扰了我好久的问题终于搞懂了orz
更多请移步《你不知道的JavaScript》一书
相关文章推荐
- json的两种表示结构(对象和数组).。
- JavaScript声明提升
- js实现简单排列组合的方法
- Date.prototype.format,js下的时间格式处理函数
- 游戏开发常用JS
- JavaScript+html5 canvas制作的圆中圆效果实例
- JS中元素动画效果Transform属性
- javascript:history.go()和History.back()的区别
- JS一定要放在Body的最底部么?聊聊浏览器的渲染机制
- ajax--上传进度条
- js中的继承与重写
- Javascript获取页面元素的位置
- JavaScript+html5 canvas绘制的小人效果
- Objective-C与JavaScript交互的那些事
- jsp页面中文乱码
- youku的js脚本的工具函数和初始化方法
- JavaScript+html5 canvas制作色彩斑斓的正方形效果
- APP中javascript+css3实现下拉刷新效果
- Threejs 的场景查看 - 几个交互事件库助你方便查看场景
- 简单的方式实现javascript 小数取整