背景知识:
- 编程语言中,作用域控制变量与参数的可见性和生命周期
- 函数体内,局部变量的优先级高于同名的全局变量
- 块级作用域:花括号内的每一段代码都具有各自的作用域
1.JavaScript不支持块级作用域
JavaScript的函数作用域:变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的
function hello() { for (var i = 0; i < 10; i++) { } console.log(i); }
|
2.声明提前:JavaScript函数里申明的所有变量都被提前至函数体顶部
var scope = 'global'; function test() { console.log(scope); var scope = 'local'; console.log(scope); }
|
该函数等价于:
var scope = 'global'; function test() { var scope; console.log(scope); scope = 'local'; console.log(scope); }
|