JavaScript 会将函数声明和变量声明提升到当前作用域的顶部。
变量赋值不会提升。
在脚本的顶部声明函数和变量,这样语法和行为就会相互保持一致。
sayHi("Julia"); function sayHi(name) { console.log(greeting + " " + name); var greeting = "Hello"; } //输出 "undefined Julia" //实际编译时 sayHi("Julia"); function sayHi(name) { var greeting; console.log(greeting + " " + name); greeting = "Hello"; } //输出 "undefined Julia"