<script>
function fun(){console.log(1)}
fun();//
function fun(){console.log(2)}
fun();//
var fun=100;
console.log(fun);//
fun();//
</script>
运行结果是:
2;
2;
100;
error;
解析:由于声明提前,上面的方程实际在计算机上变为了如下情况:
function fun(){console.log(1)} //声明提前 //声明了 变量fun1
function fun(){console.log(2)} //声明提前 //替换上面的 变量fun2,变量1被释放
var fun; //声明提前 //再次声明,无改变fun2
fun(); //执行function2
fun(); //执行function2
fun=100; //赋值留在原地 //变量fun2 被赋值,fun2被释放,变为fun=100,
console.log(fun); //fun=100 ,Number类型
fun(); //typeerror Number类型后面不能加括号