JavaScript Hoisting和“先有鸡还是先有蛋”
代码很简单,但是有个很有趣的东西。
?
先看这段代码:
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)?
?
我觉着吧,除了鸡和蛋,还有个创造鸡和蛋的上帝!那就是程序员。
?
参考:
?
?
?
?
?
?
?
?
?
?
-------------------------------------------------------------------------------------------------------------------------------------
下面的广告好讨厌 不得已这样
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。