今天看书无意中发现一个例子,然后突然进行了改造。
原始例子
var foo=0;
console.log(foo);
var myfunction=function(){
var foo=1;
console.log(foo);
var myNextFunction=function(){
var foo=2;
console.log(foo);
}();
}();输出0,1,2
改造后的例子
var foo=0;
console.log(foo);
var myfunction=function(){
var myNextFunction=function(){
var foo=2;
console.log(foo);
}();
console.log(foo);
var foo=1;
console.log(foo);
}();输出0,2,undefined,1
哦,果真javascript里面的变量声明和定义是讲顺序的,运行到第三个console.log发生undefined,是因为函数内已经将foo的空间声明,却没定义。