js声明提升

块级作用域
  块级作用域是指花括号内的每一段代码都具有各自的作用域,而javascript没有块级作用域。javascript只有函数作用域:变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的
  这意味着,变量在声明之前甚至已经可用。javascript这个特性被非正式地称为声明提升(hoisting),javascript函数里声明的所有变量(不涉及赋值)都被提前到函数体的顶部
  [注意]其实除了变量提升,函数也被提升,到函数部分会有详细介绍


var scope = 'global';
function f(){
console.log(scope);//undefined
var scope = 'local';
console.log(scope);//'local'
}

这里要注意的是undefined和报错的区别(undefined并不是错误,只是没有定义而已)

你可能感兴趣的:(js声明提升)