首页 > 编程语言 > 详细

JavaScript Hoisting和“先有鸡还是先有蛋”

时间:2015-02-02 02:08:45      阅读:297      评论:0      收藏:0      [点我收藏+]

代码很简单,但是有个很有趣的东西。

?

先看这段代码:

a = 2;

var a;

console.log( a );

控制台上会输出什么?

或许你会觉得是输出个undefined?,因为a定义声明是在a=2这个赋值声明之后的,console.log(a)的时候,a是没有赋值的,所以是undefined?。然而事实并非如此。输出是:2。

?

再看这段代码:

console.log( a );

var a = 2;

通过上面的例子:或许你觉着是输出2,或者抛ReferenceError?错。但这两个想法都是错的。输出是undefined?。

?

这两段代码阐述了一个问题:先有鸡还是先有蛋。

用JavaScript语言来提问就是:先有声明(declaration?),还是先有赋值(assignment)?

?

我觉着吧,除了鸡和蛋,还有个创造鸡和蛋的上帝!那就是程序员。

?

参考:

JavaScript Hoisting

?

?

?

?

?

?

?

?

?

?

-------------------------------------------------------------------------------------------------------------------------------------

下面的广告好讨厌 不得已这样

JavaScript Hoisting和“先有鸡还是先有蛋”

原文:http://mirroravatar.iteye.com/blog/2182129

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!