function a(){
};
var a = 1;
console.log(a);
输出的结果是:1
相当于
var a;
function a(){
};
a = 1;
console.log(a);
function a(){
};
var a;
console.log(a);
输出结果是:function a()
function a(){
console.log(1)
};
function a(){
console.log(2)
};
console.log(a);
输出结果是: function a( ){
console.log(2)
};
分析以上代码总结:
- 函数声明会置顶
- 变量声明也会置顶
- 函数声明比变量声明更置顶,也就是与函数声明同名的变量声明会无效
- 同名的函数声明后面的会覆盖前面的
- 同名的变量声明后面的会被忽略
- 变量和赋值语句一起书写,在js引擎解析时,会将其拆成声明和赋值2部分,声明置顶,赋值保留在原来位置