1 var str = 'a'; 2 (function() { 3 alert(str); 4 var str = 'b' 5 })() // undefined
函数里定义一个和外部变量一样名称的变量时,变量的声明会提升至第一句,赋值则不会变。所以上述语句其实是这样执行的
1 var str = 'a'; 2 (function(){ 3 var str; 4 alert(str); 5 str = 'b' 6 })() // undefined