JavaScript引擎运行js代码时会将所有声明的变量(包括函数名)提升到整个代码上下文的头部,然后再开始执行。 提升到头部是只提升变量的声明,变量的初始化和赋值都还是按照原来的位置执行。 函数内部也有类似的变量提升