解析:
javascript并不是严格的自上而下执行的语言,它会将当前作用域的所有变量的声明提升到程序的顶部
console.log(c)
var c = 'c'
其执行顺序是:
var c //变量提升
console.log(c) //undefind
c = 'c' //赋值语句并不会提升
函数提升
当函数声明与其他声明一起出现的时候,是以谁为准呢?答案就是,函数声明高于一切,毕竟函数是js的第一公民。
foo();
function foo() {
console.log('foo');
}
var foo = 2;
其执行顺序是:
function foo () { //函数提升到顶部
console.log('foo')
}
var foo //变量提升,不过此声明无效,因为优先级不够函数高
foo()
foo = 2