声明提前例题

function fun(){
    console.log(1);
}
fun();  //2
function fun(){
    console.log(2);
}
fun();  //2
var fun=100;
fun();  //报错,fun不是一个函数了

解析:

   程序在执行前,都会先找到var声明得到变量和function声明的函数,提前到当前作用域的顶部,但是赋值会留在原地。

 
function fun(){console.log(1);}
function fun(){console.log(2);}
遇到同名的,会覆盖第一个fun函数

var fun=100;=>var fun; fun=100;
声明 赋值
var fun 被提前,但是原来已经有了一个fun变量,所以这句不执行,
fun();
fun();
fun=100;
fun();

所以第一次调用和第二次调用fun都输出2;然后将100赋值给了fun,所以第三次调用时,变量fun已经不是一个函数了,所以无法调用,调用了就会报错

 
posted @ 2020-05-31 11:47  L小洁  阅读(136)  评论(0编辑  收藏  举报