js是解释型语言,因此当浏览器运行js时会分为两个部分,首先预编译全部代码,之后执行代码。
- 函数声明会置顶
- 变量声明也会置顶
- 函数声明与变量声明重名的时候,函数优先级更高(函数在变量上面)
- 变量和赋值语句一起书写时,在js引擎解析时,会将其拆成声明和赋值2部分,声明置顶,赋值保留在原来位置
- 声明过的变量不会重复声明
参考:https://github.com/BTFE/BTFE-blog/issues/18
举例:
a();//Tom
var a = function(){
alert('Jerry');
};
function a(){
alert('Tom');
}
a();//Jerry