//函数的执行规则
//var fn = {}; //fn 在栈内存中声明变量 fn
function fn() {
console.log('1')
}//在堆中声明函数 fn
fn() //fn is not a function
/*
* 1、函数在执行的时候,先去栈内存中寻找有fn的变量,再去堆内存中寻找对应的fn内存地址,如果找到,则执行,反之报错
* 2、如果在栈内存中找不到变量fn,则去堆内存中找有没有fn的内存地址,有就执行,没有就报错
* 3、为什么先去栈内存中先找,而不去堆内存中?因为栈内存比较小,程序就先扫描栈内存,没有再去更大的空间==》堆内存中查找
* */