<!DOCTYPE html>
<html><head></head><body><script>//---------------------- 函数预编译 ------------------------------------------------// 也可以理解为 function声明语句被提升到作用域顶部// 注意不能在firebug的控制台下直接运行,控制台环境下没声明语句的提升效果var ifunction bar(){ i=100;}bar();alert(i); //200function bar(){
i=200;}bar();alert(i); //200//----------------------------------------------------------------------
//------------------ var 变量 声明语句被提升 赋值语句没被提升-----------------
var t=0;function foo(){ alert(t); //undefined ~~~执行到这句时 函数内部存在局部变量t 但是尚未赋值var t=300; // var t 声明语句被提升到作用域顶部 t=300赋值语句没被提升alert(t); //300}foo();//需要注意的是: 声明语句会被提升,赋值语句不会被提升如:
alert(fn); //undefined 声明语句var fn被提升 var fn=function(){alert('hi');};//----------------------------------------------------------------------</script></body></html>