举几个例子
例1
console.log(myname);
var myname = '王美丽'
输出结果:undefined
var会进行变量提升,以上代码等同于
var myname = undefined
console.log(myname);
myname = '王美丽'
例2
function showName(){console.log('王花花');}
showName()
function showName(){console.log('王美丽');}
showName()
等同于
function showName(){console.log('王花花');}
function showName(){console.log('王美丽');}
showName()
showName()
重名就会覆盖,打印两次王美丽
例3
showName()
var showName = function(){console.log(2)}
function showName(){console.log(1);}
showName()
等同于
// var showName = undefined 同名被覆盖了
function showName(){console.log(1);}
showName()
showName= function(){console.log(2)}
showName()
输出
例4
var showName= 1
showName()
var showName = function(){console.log(2);}
function showName(){console.log(1);}
等同于
var showName = undefined
var showName = undefined
function showName(){console.log(1);}
showName= 1
//当我们执行到这里的时候,showName是1,不再是方法了
showName()
showName = function(){console.log(2);}
输出结果