浏览标记为 " javascript" 的文章
9月
6
2013

ZZ 谈javascript变量声明

这篇文章还是对基础的复习,对面试经历的一个总结。

之前的面试中遇到过一道面试题

var a = 10;
(function () {
	console.log(a);
	var a = 20;
})()

短短5行代码log的结果是什么?
如果把var a = 20;console.log(a)语句顺序对调呢?

这道题目的答案是undefined。不是10。

关键在于javascript的变量声明有一个hoisting机制,变量声明永远都会被提升至作用域的最顶端(注意测试还只是声明,还没有赋值)。其实上面的语句相当于:

var a = 10;
(function () {
	var a; //在这里对变量hoisting,先声明
	console.log(a);
	a = 20; //再赋值
})()

再精简一点:

bla = 2
var bla;

// 这是分割线,上下代码的效果其实是一样的

var bla;
bla = 2;

也就是先使用,再声明(注意是声明,还没有赋值),这样一来,声明和赋值就被分开来了。所以最佳实践都推荐最好在函数的顶端把需要使用的变量首先声明一遍。

(更多…)

博客剩余工作

6,优化前台(YSlow) 2,404页面 3,IE6下兼容性问题很大 1,标签小工具行高有点儿问题 4,微博聚合 5,推广工作 7,CDN(cloudflare

分类

访问统计