带var 和 function 关键字声明相同的名字,这也算重名了(其实是一个fn,只是存储值得类型不一样)
fn();//4
function fn () {
console.log(1);
}
fn();//4
function fn () {
console.log(2);
}
fn();//4
var fn=100;
//带var 的在提升阶段只把声明处理了,赋值操作没有处理,所以在代码执行的时候需要完成赋值 fn=100
fn();// Uncaught TypeError: fn is not a function
function fn () {
console.log(3);
}
fn();
function fn () {
console.log(4);
}
fn();
最终结果输出 4 4 4 报错
这也就说明重名 如果名字重复 ,不会重新的声明,但是会重新的定义(重新赋值)[不管是变量提升还是代码执行阶段皆是如此]